Ajax实现三级联动效果


Posted in Javascript onOctober 05, 2021

本文实例为大家分享了Ajax实现三级联动效果的具体代码,供大家参考,具体内容如下

一、导入数据表和gson.jar

该表包括了中国所有的省、市、县、区,它们之间通过parentid关联。

Ajax实现三级联动效果

二、后端代码

由于每一级的数据都是根据上一级的id查询而来,逻辑十分相似,故我们只需要一个接口就可以完成三级甚至更多级的联动,在这个案例中我们的核心查询就是select * from area where parentid=#{pid}

entity

package com.codeXie.entity;

import java.io.Serializable;

public class Area implements Serializable {
    private String areaid;
    private String areaname;
    private String parentid;
    private Integer arealevel;
    private Integer status;

    public Area() {
    }

    public Area(String areaid, String areaname, String parentid, Integer arealevel, Integer status) {
        this.areaid = areaid;
        this.areaname = areaname;
        this.parentid = parentid;
        this.arealevel = arealevel;
        this.status = status;
    }
    .......省略了对各属性的set、get
}

mapper

public interface AreaMapper {
    @Select("select * from area where parentid=#{pid}")
    List<Area> selectMore(Integer pid);
}

service

public interface AreaService {
    List<Area> findCity(int pid);
}

servlet

@WebServlet("/AreaServlet")
public class AreaServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        String pid = req.getParameter("pid");
        AreaServiceImpl service = new AreaServiceImpl();
        List<Area> areas = service.findCity(Integer.parseInt(pid));
        String json = new Gson().toJson(areas);
        resp.getWriter().print(json);
    }
}

三、前端代码

<script src="js/jquery.js"></script>
    <script>
        function produceOption(id,list){
            console.log(list)
            $(id).empty()
            $(list).each((index,item)=>{
                $(id).append("<option value="+item.areaid+">"+item.areaname+"</option>")
            })
            
        }
        $(()=>{
            $.ajax({
                url:"AreaServlet",
                method:"post",
                data:{pid:0},
                dataType:"json",
                success: function(res) {
                   produceOption("#proviance",res)
                   $("#proviance").prepend("<option selected='selected'>请选择省份</option>")
                }
            })
            $("#proviance").change(function(){
                var pid = $(this).prop("value")
                $.ajax({
                url:"AreaServlet",
                method:"post",
                data:{pid:pid},
                dataType:"json",
                success: function(res) {
                   produceOption("#city",res)
                   $("#city").prepend("<option selected='selected'>请选择城市</option>")
                }
            })
        })
        $("#city").on("change",function(){
            var pid = $(this).prop("value")
                $.ajax({
                url:"AreaServlet",
                method:"post",
                data:{pid:pid},
                dataType:"json",
                success: function(res) {
                   produceOption("#country",res)
                   
                }
            })
        })
    })
    </script>
</head>
<body>
    <h2>三级联动</h2>
    <hr/>
    <select name="pro" id="proviance">
        <option>选择省份</option>
    </select>
    <select name="city" id="city">
        <option>选择城市</option>
    </select>
    <select name="country" id="country">
        <option>请选择区域</option>
    </select>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
情人节专属 纯js脚本1k大小的3D玫瑰效果
Feb 11 Javascript
JS判断不能为空实例代码
Nov 26 Javascript
给事件响应函数传参数的四种方式小结
Dec 05 Javascript
Javascript基础教程之数据类型 (字符串 String)
Jan 18 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
Oct 19 Javascript
angularJs关于指令的一些冷门属性详解
Oct 24 Javascript
关于微信jssdk实现多图片上传的一点心得分享
Dec 13 Javascript
解决Mac安装thrift因bison报错的问题
May 17 Javascript
说说Vuex的getters属性的具体用法
Apr 15 Javascript
vue-cli3项目展示本地Markdown文件的方法
Jun 07 Javascript
vue transition 在子组件中失效的解决
Nov 12 Javascript
适用于 Vue 的播放器组件Vue-Video-Player操作
Nov 16 Javascript
5种 JavaScript 方式实现数组扁平化
Oct 05 #Javascript
国庆节到了,利用JS实现一个生成国庆风头像的小工具 详解实现过程
Oct 05 #Javascript
Javascript设计模式之原型模式详细
JS数组方法some、every和find的使用详情
8个JS的reduce使用实例和reduce操作方式
Oct 05 #Javascript
JS 4个超级实用的小技巧 提升开发效率
Oct 05 #Javascript
JavaScript实现简单拖拽效果
Sep 15 #Javascript
You might like
PHP面向对象分析设计的经验原则
2008/09/20 PHP
laravel框架 api自定义全局异常处理方法
2019/10/11 PHP
Laravel使用模型实现like模糊查询的例子
2019/10/24 PHP
PHP大文件分割分片上传实现代码
2020/12/09 PHP
你的编程语言可以这样做吗?
2006/09/07 Javascript
javascript 混合的构造函数和原型方式,动态原型方式
2009/12/07 Javascript
js模仿html5 placeholder适应于不支持的浏览器
2013/01/13 Javascript
js中的scroll和offset 使用比较的实例与分析
2013/09/29 Javascript
JS中的数组的sort方法使用示例
2014/01/22 Javascript
JS实现鼠标箭头变成一个燃烧烛光效果的方法
2015/02/28 Javascript
js控制文本框输入的字符类型方法汇总
2015/06/19 Javascript
浅谈javascript中onbeforeunload与onunload事件
2015/12/10 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
vue 使用 vue-pdf 实现pdf在线预览的示例代码
2020/04/26 Javascript
小程序实现录音功能
2020/09/22 Javascript
详解JavaScript执行模型
2020/11/16 Javascript
wxPython学习之主框架实例
2014/09/28 Python
Python面向对象程序设计类的多态用法详解
2019/04/12 Python
python读写csv文件方法详细总结
2019/07/05 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
2020/05/20 Python
Python3爬虫中关于Ajax分析方法的总结
2020/07/10 Python
CSS3绘制圆角矩形的简单示例
2015/09/28 HTML / CSS
HTML5 Canvas 实现K线图的示例代码
2019/12/23 HTML / CSS
浙大网新C/C++面试解惑
2015/05/27 面试题
行政助理岗位职责
2013/11/10 职场文书
会计学生自我鉴定
2014/02/06 职场文书
幼教求职信
2014/03/12 职场文书
学校食品安全实施方案
2014/06/14 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
信息合作协议书
2014/10/09 职场文书
安全生产工作汇报
2014/10/28 职场文书
寻找最美乡村教师观后感
2015/06/18 职场文书
法制教育主题班会
2015/08/13 职场文书
导游词之永泰公主墓
2019/12/04 职场文书
基于HTML十秒做出淘宝页面
2021/10/24 HTML / CSS
JavaScript实现优先级队列
2021/12/06 Javascript