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 相关文章推荐
js trim函数 去空格函数与正则集锦
Nov 20 Javascript
JavaScript 图片预览效果 推荐
Dec 22 Javascript
jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
Mar 21 Javascript
基于jQuery的合并表格中相同文本的相邻单元格的代码
Apr 06 Javascript
读jQuery之四(优雅的迭代)
Jun 20 Javascript
Prototype源码浅析 String部分(三)之HTML字符串处理
Jan 15 Javascript
javascript事件委托的用法及其好处简析
Apr 04 Javascript
Angularjs之filter过滤器(推荐)
Nov 27 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
Sep 05 Javascript
Vue 组件修改根实例的数据的方法
Apr 02 Javascript
vue中使用elementUI组件手动上传图片功能
Dec 13 Javascript
Node Mongoose用法详解【Mongoose使用、Schema、对象、model文档等】
May 13 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
一个颜色轮换的简单例子
2006/10/09 PHP
浅析php学习的路线图
2013/07/10 PHP
php.ini save_handler 修改不生效的解决办法
2014/07/22 PHP
php获取CSS文件中图片地址并下载到本地的方法
2014/12/02 PHP
php上传中文文件名乱码问题处理方案
2015/02/03 PHP
php防止网站被攻击的应急代码
2015/10/21 PHP
header与缓冲区之间的深层次分析
2016/07/30 PHP
PHP脚本自动识别验证码查询汽车违章
2016/12/20 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
2017/09/04 PHP
Packer 3.0 JS压缩及混淆工具 下载
2007/05/03 Javascript
JavaScript中的this关键字介绍与使用实例
2013/06/21 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
2013/10/16 Javascript
javascript页面上使用动态时间具体实现
2014/03/18 Javascript
鼠标移到图片上变大显示而不是放大镜效果
2014/06/15 Javascript
JavaScript使用指针操作实现约瑟夫问题实例
2015/04/07 Javascript
使用canvas实现仿新浪微博头像截取上传功能
2015/09/02 Javascript
nodejs加密Crypto的实例代码
2016/07/07 NodeJs
js移动焦点到最后位置的简单方法
2016/11/25 Javascript
详解js树形控件—zTree使用总结
2016/12/28 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
解析Vue2.0双向绑定实现原理
2017/02/23 Javascript
详解使用vue实现tab 切换操作
2017/07/03 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
JointJS JavaScript流程图绘制框架解析
2019/08/15 Javascript
JS异步宏队列微队列原理详解
2020/09/09 Javascript
matplotlib 纵坐标轴显示数据值的实例
2018/05/25 Python
Windows下python3.6.4安装教程
2018/07/31 Python
Python3标准库总结
2019/02/19 Python
python实现杨氏矩阵查找
2019/03/02 Python
浅谈python常用程序算法
2019/03/22 Python
jupyter notebook插入本地图片的实现
2020/04/13 Python
python函数调用,循环,列表复制实例
2020/05/03 Python
应届毕业生应聘自荐信
2013/12/07 职场文书
校庆接待方案
2014/03/18 职场文书
草房子读书笔记
2015/06/29 职场文书
保护动物的宣传语
2015/07/13 职场文书