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 相关文章推荐
In Javascript Class, how to call the prototype method.(three method)
Jan 09 Javascript
Javascript 中的类和闭包
Jan 08 Javascript
Extjs TimeField 显示正常时间格式的代码
Jun 28 Javascript
js 连接数据库如何操作数据库中的数据
Nov 23 Javascript
基于javascript实现浏览器滚动条快到底部时自动加载数据
Nov 30 Javascript
AngularJS在IE下取数据总是缓存问题的解决方法
Aug 05 Javascript
Centos6.8下Node.js安装教程
May 12 Javascript
JS二级菜单不同实现方法分析【4种方法】
Dec 21 Javascript
electron-vue开发环境内存泄漏问题汇总
Oct 10 Javascript
Vue filter 过滤当前时间 实现实时更新效果
Dec 20 Javascript
基于JS实现计算24点算法代码实例解析
Jul 23 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
Dec 11 Vue.js
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学习之字符串比较和查找
2011/04/17 PHP
php CI框架插入一条或多条sql记录示例
2014/07/29 PHP
PHP函数checkdnsrr用法详解(Windows平台用法)
2016/03/21 PHP
浅析Yii2集成富文本编辑器redactor实例教程
2016/04/25 PHP
Mac下php 5升级到php 7的步骤详解
2017/04/26 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
2017/07/18 PHP
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
2007/11/30 Javascript
JS动态调用方法名示例介绍
2013/12/18 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
javascript中的深复制详解及实例分析
2016/12/29 Javascript
基于React实现表单数据的添加和删除详解
2017/03/14 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
Element UI 自定义正则表达式验证方法
2018/09/04 Javascript
JSONP原理及应用实例详解
2018/09/13 Javascript
JS sort方法基于数组对象属性值排序
2020/07/10 Javascript
[00:09]DOTA2全国高校联赛 精彩活动引爆全场
2018/05/30 DOTA
Windows系统下使用flup搭建Nginx和Python环境的方法
2015/12/25 Python
[机器视觉]使用python自动识别验证码详解
2019/05/16 Python
python实现五子棋人机对战游戏
2020/03/25 Python
Python paramiko模块使用解析(实现ssh)
2019/08/30 Python
如何用Django处理gzip数据流
2021/01/29 Python
CSS3实现各种图形的示例代码
2016/10/19 HTML / CSS
新英格兰最大的特色礼品连锁店:The Paper Store
2018/07/23 全球购物
毕业生怎样写好自荐信
2013/11/11 职场文书
理货员的岗位职责
2013/11/23 职场文书
银行员工职业规划范文
2014/01/21 职场文书
金融管理应届生求职信
2014/02/20 职场文书
遗嘱公证书标准样本
2014/04/08 职场文书
企业安全生产承诺书
2014/05/22 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
求职自荐信范文(优秀篇)
2015/03/27 职场文书
css3实现背景图片半透明内容不透明的方法示例
2021/04/13 HTML / CSS
python使用torch随机初始化参数
2022/03/22 Python
Android studio 简单计算器的编写
2022/05/20 Java/Android
python manim实现排序算法动画示例
2022/08/14 Python