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 相关文章推荐
javascript 控制弹出窗口
Apr 10 Javascript
有关DOM元素与事件的3个谜题
Nov 11 Javascript
自编jQuery插件实现模拟alert和confirm
Sep 01 Javascript
理解jQuery stop()方法
Nov 21 Javascript
浅谈jquery页面初始化的4种方式
Nov 27 Javascript
Angular.JS中指令ng-if的注意事项小结
Jun 21 Javascript
微信小程序 同步请求授权的详解
Aug 04 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
Dec 19 Javascript
Vue 路由 过渡动效 数据获取方法
Jul 31 Javascript
vue项目中使用scss的方法步骤
May 16 Javascript
jQuery+ajax实现批量删除功能完整示例
Jun 06 jQuery
在Angular项目使用socket.io实现通信的方法
Jan 05 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+DBM的同学录程序(5)
2006/10/09 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
2016/01/22 PHP
PHP如何将XML转成数组
2016/04/04 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
2016/11/15 PHP
PHP 文件上传后端处理实用技巧方法
2017/01/06 PHP
PHP连接MySQL进行增、删、改、查操作
2017/02/19 PHP
PHP PDOStatement::nextRowset讲解
2019/02/01 PHP
禁止JQuery中的load方法装载IE缓存中文件的方法
2009/09/11 Javascript
JQuery入门——事件切换之hover()方法应用介绍
2013/02/05 Javascript
js 获取、清空input type=&quot;file&quot;的值示例代码
2014/02/19 Javascript
JS实现清除指定cookies的方法
2014/09/20 Javascript
JavaScript中getUTCMinutes()方法的使用详解
2015/06/10 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
详解利用exif.js解决ios手机上传竖拍照片旋转90度问题
2016/11/04 Javascript
详谈AngularJs 控制器、数据绑定、作用域
2017/07/09 Javascript
js中this的指向问题归纳总结
2018/11/28 Javascript
JavaScript实现的开关灯泡点击切换特效示例
2019/07/08 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
详解Vscode中使用Eslint终极配置大全
2019/11/08 Javascript
[40:05]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第一局
2016/02/25 DOTA
[05:13]2018DOTA2亚洲邀请赛主赛事第二日战况回顾 LGD、VG双雄携手晋级
2018/04/05 DOTA
[47:20]DAC2018 4.4 淘汰赛 Optic vs Mineski 第一场
2018/04/05 DOTA
python基于queue和threading实现多线程下载实例
2014/10/08 Python
使用Python操作MySQL的一些基本方法
2015/08/16 Python
python 全局变量的import机制介绍
2017/09/07 Python
Python 异常处理的实例详解
2017/09/11 Python
详解PyTorch批训练及优化器比较
2018/04/28 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
CSS 3.0文字悬停跳动特效代码
2020/10/26 HTML / CSS
世界知名接发和假发品牌:Poze Hair
2017/03/08 全球购物
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
解除租房协议书
2014/12/03 职场文书
Win11绿屏怎么办?Win11绿屏死机的解决方法
2021/11/21 数码科技
Android在Sqlite3中的应用及多线程使用数据库的建议
2022/04/24 Java/Android