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 ajax serialize()方法的使用以及常见问题解决
Jan 27 Javascript
JavaScript中的对象序列化介绍
Dec 30 Javascript
JavaScript返回当前会话cookie全部键值对照的方法
Apr 03 Javascript
javascript实现标签切换代码示例
May 22 Javascript
javascript基础知识
Jun 07 Javascript
Bootstrap轮播插件简单使用方法介绍
Jun 21 Javascript
浅谈javascript中关于日期和时间的基础知识
Jul 13 Javascript
VC调用javascript的几种方法(推荐)
Aug 09 Javascript
Angular实现预加载延迟模块的示例
Oct 12 Javascript
有趣的JavaScript隐式类型转换操作实例分析
May 02 Javascript
SpringBoot+Vue开发之Login校验规则、实现登录和重置事件
Oct 19 Javascript
vue打包通过image-webpack-loader插件对图片压缩优化操作
Nov 12 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
jquery 入门教程 [翻译] 推荐
2009/08/17 Javascript
jQuery EasyUI 的EasyLoader功能介绍
2010/09/12 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
生成二维码方法汇总
2014/12/26 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
复杂的javascript窗口分帧解析
2016/02/19 Javascript
深入解析Javascript闭包的功能及实现方法
2016/07/10 Javascript
nodejs搭建本地服务器并访问文件的方法
2017/03/03 NodeJs
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
jQuery实现滚动效果
2017/11/17 jQuery
three.js实现3D影院的原理的代码分析
2017/12/18 Javascript
vue实现新闻展示页的步骤详解
2019/04/11 Javascript
解决layer弹出层自适应页面大小的问题
2019/09/16 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
2019/10/23 Javascript
微信小程序实现轨迹回放的示例代码
2019/12/13 Javascript
微信小程序实现简单的select下拉框
2020/11/23 Javascript
[01:33]DOTA2上海特级锦标赛 LIQUID战队完整宣传片
2016/03/16 DOTA
python使用线程封装的一个简单定时器类实例
2015/05/16 Python
Python 关于反射和类的特殊成员方法
2017/09/14 Python
python实现转盘效果 python实现轮盘抽奖游戏
2019/01/22 Python
基于Python数据结构之递归与回溯搜索
2020/02/26 Python
如何在python中执行另一个py文件
2020/04/30 Python
python中的错误如何查看
2020/07/08 Python
python实现学生通讯录管理系统
2021/02/25 Python
薇诺娜官方网上商城:专注敏感肌肤
2017/05/25 全球购物
UNIX命令速查表
2012/03/10 面试题
财务部总监岗位职责
2014/03/12 职场文书
生物技术专业求职信
2014/06/10 职场文书
大学生安全责任书
2014/07/25 职场文书
超市优秀员工获奖感言
2014/08/15 职场文书
工作年限证明模板
2014/11/01 职场文书
小学班主任评语
2014/12/29 职场文书
教学督导岗位职责
2015/04/10 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
祝福语集锦:朋友新店开业祝福语
2019/12/10 职场文书
Python循环之while无限迭代
2022/04/30 Python