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 相关文章推荐
文本加密解密
Jun 23 Javascript
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
Apr 12 Javascript
按下回车键指向下一个位置的一个函数代码
Mar 10 Javascript
详解Javacript和AngularJS中的Promises
Feb 09 Javascript
基于javascript html5实现多文件上传
Mar 03 Javascript
JavaScript中的this引用(推荐)
Aug 05 Javascript
微信小程序 this和that详解及简单实例
Feb 13 Javascript
jQuery 实时保存页面动态添加的数据的示例
Aug 14 jQuery
基于Vue实现拖拽功能
Jul 29 Javascript
Windows下安装 node 的版本控制工具 nvm
Feb 06 Javascript
Vue发布订阅模式实现过程图解
Apr 30 Javascript
微信小程序接入vant Weapp组件的详细步骤
Oct 28 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和ACCESS写聊天室(七)
2006/10/09 PHP
PHP学习笔记之二 php入门知识
2011/01/12 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
2013/06/18 PHP
php实现用户登陆简单实例
2017/04/04 PHP
Javascript下的keyCode键码值表
2007/04/10 Javascript
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
Javascript 获取链接(url)参数的方法[正则与截取字符串]
2010/02/09 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
javascript 获取HTML DOM父、子、临近节点
2014/06/16 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
2015/06/05 Javascript
怎么限制input的text里输入的值只能是数字(正则、js)
2016/05/16 Javascript
jquery Ajax实现Select动态添加数据
2017/06/08 jQuery
form表单序列化详解(推荐)
2017/08/15 Javascript
微信小程序wx.request实现后台数据交互功能分析
2017/11/25 Javascript
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
ES6 Set结构的应用实例分析
2019/06/26 Javascript
详解vue-router的Import异步加载模块问题的解决方案
2020/05/13 Javascript
vuex实现购物车功能
2020/06/28 Javascript
[42:36]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第二局
2016/02/26 DOTA
Python编程语言的35个与众不同之处(语言特征和使用技巧)
2014/07/07 Python
Python 读写文件和file对象的方法(推荐)
2016/09/12 Python
python3实现TCP协议的简单服务器和客户端案例(分享)
2017/06/14 Python
python中有函数重载吗
2020/05/28 Python
英国最大的正宗复古足球衫制造商和零售商:TOFFS
2018/06/21 全球购物
药学专业毕业生求职信
2013/10/20 职场文书
教师开学感言
2014/02/14 职场文书
差生评语大全
2014/05/04 职场文书
新手上路标语
2014/06/20 职场文书
班级学习雷锋活动总结
2014/07/04 职场文书
2014年房产经纪人工作总结
2014/12/08 职场文书
稽核岗位职责
2015/02/10 职场文书
2015暑期工社会实践报告
2015/07/13 职场文书
2016中秋节月饼促销广告语
2016/01/28 职场文书
导游词之南京汤山温泉
2019/11/26 职场文书
html5+实现plus.io进行拍照和图片等获取
2022/06/01 HTML / CSS