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 相关文章推荐
浅析node.js中close事件
Nov 26 Javascript
jquery中animate的stop()方法作用实例分析
Jan 30 Javascript
javascript实现树形菜单的方法
Jul 17 Javascript
JS实现IE状态栏文字缩放效果代码
Oct 24 Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
Jan 11 Javascript
使用Xcache缓存器加速PHP网站的配置方法
Apr 22 Javascript
Vue2.0实现购物车功能
Jun 05 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
Sep 28 Javascript
Element-ui table中过滤条件变更表格内容的方法
Mar 02 Javascript
Jquery的Ajax技术使用方法
Jan 21 jQuery
详解微信小程序实现仿微信聊天界面(各种细节处理)
Feb 17 Javascript
Vue scoped及deep使用方法解析
Aug 01 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写的加密函数,支持私人密钥(详细介绍)
2013/06/09 PHP
php 获取本地IP代码
2013/06/23 PHP
php实现两表合并成新表并且有序排列的方法
2014/12/05 PHP
浅谈json_encode用法
2015/03/05 PHP
Javascript 遍历对象中的子对象
2009/07/03 Javascript
javascript,jquery闭包概念分析
2010/06/19 Javascript
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
2011/08/23 Javascript
Jquery中children与find之间的区别详细解析
2013/11/29 Javascript
js实现倒计时时钟的示例代码
2013/12/17 Javascript
Javascript 浮点运算精度问题分析与解决
2014/03/26 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
JS显示日历和天气的方法
2016/03/01 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
2017/04/17 jQuery
React-router 4 按需加载的实现方式及原理详解
2017/05/25 Javascript
Bootstrap Table使用整理(一)
2017/06/09 Javascript
基于复选框demo(分享)
2017/09/27 Javascript
web前端页面生成exe可执行文件的方法
2018/02/08 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
Emberjs 通过 axios 下载文件的方法
2019/09/03 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
Python 检查数组元素是否存在类似PHP isset()方法
2014/10/14 Python
python中引用与复制用法实例分析
2015/06/04 Python
Python实现模拟登录及表单提交的方法
2015/07/25 Python
使用PyV8在Python爬虫中执行js代码
2017/02/16 Python
Python编程实现数学运算求一元二次方程的实根算法示例
2017/04/02 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
2018/03/04 Python
Python常用特殊方法实例总结
2019/03/22 Python
python如何保证输入键入数字的方法
2019/08/23 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
2020/07/28 Python
CSS3常用的几种颜色渐变模式总结
2016/11/18 HTML / CSS
美国时尚在线:Showpo
2017/09/08 全球购物
介绍一下Mysql的存储引擎
2015/02/12 面试题
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
遥感技术与仪器求职信
2014/02/22 职场文书
团支部书记竞选稿
2015/11/21 职场文书
《给予树》教学反思
2016/03/03 职场文书