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 相关文章推荐
jquery实现类似淘宝星星评分功能实例
Sep 12 Javascript
jquery 实现两Select 标签项互调示例代码
Sep 25 Javascript
JavaScript动态添加style节点的方法
Jun 09 Javascript
谈谈JavaScript数组常用方法总结
Jan 24 Javascript
JS变量及其作用域
Mar 29 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
May 22 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
Aug 06 Javascript
浅谈Vue-cli 命令行工具分析
Nov 22 Javascript
详解如何实现一个简单的Node.js脚手架
Dec 04 Javascript
VUEX 数据持久化,刷新后重新获取的例子
Nov 12 Javascript
javaScript 实现重复输出给定的字符串的常用方法小结
Feb 20 Javascript
如何在面试中手写出javascript节流和防抖函数
Oct 22 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
基于wordpress主题制作的具体实现步骤
2013/05/10 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2016/05/09 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
thinkphp自定义权限管理之名称判断方法
2017/04/01 PHP
Javascript 多浏览器兼容总结(实战经验)
2013/10/30 Javascript
jquery绑定事件不生效的解决方法
2014/02/11 Javascript
javascript简单实现命名空间效果
2014/03/06 Javascript
抛弃Nginx使用nodejs做反向代理服务器
2014/07/17 NodeJs
浅析JS异步加载进度条
2016/05/05 Javascript
AngularJS上拉加载问题解决方法
2016/05/23 Javascript
JavaScript常用判断写法大全(推荐)
2016/05/30 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
2016/08/29 Javascript
jQuery遍历节点树方法分析
2016/09/08 Javascript
判断颜色是否合法的正则表达式(详解)
2017/05/03 Javascript
Vue仿支付宝支付功能
2018/05/25 Javascript
setTimeout与setInterval的区别浅析
2019/03/23 Javascript
js判断鼠标移入移出方向的方法
2020/06/24 Javascript
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
[00:32]2018DOTA2亚洲邀请赛Newbee出场
2018/04/03 DOTA
Python实现的自定义多线程多进程类示例
2018/03/23 Python
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
利用python和百度地图API实现数据地图标注的方法
2019/05/13 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
2019/08/15 Python
Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
2019/12/04 Python
Django model class Meta原理解析
2020/11/14 Python
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
Net-A-Porter美国官网:全球时尚奢侈品名站
2017/02/11 全球购物
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
JSF如何进行表格处理及取值
2012/08/06 面试题
重阳节登山活动方案
2014/02/03 职场文书
收银员的岗位职责范本
2014/02/04 职场文书
学习型党组织建设经验材料
2014/05/26 职场文书
音乐教师求职信
2014/06/28 职场文书
干部作风建设年活动剖析材料
2014/10/23 职场文书
教师节班会开场白
2015/06/01 职场文书
Nginx stream 配置代理(Nginx TCP/UDP 负载均衡)
2021/11/17 Servers