SpringMVC,ajax实现省市区三级联动

来源:互联网 发布:搜款网广州网络批发1 编辑:程序博客网 时间:2024/05/21 22:27

SpringMVC,ajax实现省市区三级联动

一、实现思路
1、请求 url:/province , 通过 Model 默认加载省份数据,
2、用change 事件监听province的变换,触发ajax事件,加载城市数据
3、加载区县数据,同理 2
4、数据源以国家统计局数据为基准。 最新县及县以上行政区划代码(截止2016年7月31日) 本人已经整理好2016年7月31日数据,有需要的朋友私信联系。

二、核心 pojo

public class Areas {    private String id; //区域id    private String parentId;//区域父id    private String name;//区域名称    private String code;//区域编号    private String type; // 区域类型(1:国家;2:省份、直辖市;3:地市;4:区县)}

三、jsp 页面代码

 <%-- ====== 省市区==== 三级级联 --%>     <h1>        <select name="province" id="province">            <option>--请选择--</option>            <c:forEach var="province" items="${provinceList }">                <option value="${province.id }">${province.name}</option>            </c:forEach>        </select>        <select name="city" id="city">                <option value="">--请选择--</option>        </select>        <select name="county" id="county">                <option value="">--请选择--</option>        </select>     </h1>

四、jsp 页面 js 代码

    // 1. province change        $("#province").change(function(){            var provinceId= $("#province").val(); // 获取选中的值            var provinceName= $("#province").find("option:selected").text();//获取选中的文本内容            //通过 省份 id ,获取省份下面的城市            //1. 清空 原有的 城市和区县内容            $("#city").empty();            $.get("${pageContext.request.contextPath}/cityJson",{"id":provinceId},function(data){                $("#county").empty();//清空城市下面的区县                $("#city").append("<option value=''>"+'--请选择--'+"</option>");                $("#county").append("<option value=''>"+'--请选择--'+"</option>");                $.each(data,function(k,v){                    var _ele="<option value='"+v.id+"'>"+v.name+"</option>";                    $("#city").append(_ele);                });            })        });
// 2. city change$("#city").change(function(){    var cityId=$("#city").val();    var cityName=$("#city").find("option:selected").text();    $.get("${pageContext.request.contextPath}/cityJson",{"id":cityId},function(data){        // 清空 城市下面的区县        $("#county").empty();        $("#county").append("<option value=''>"+'--请选择--'+"</option>");        $.each(data,function(k,v){            var _ele="<option value='"+v.id+"'>"+v.name+"</option>";            $("#county").append(_ele);        });    });});

五、初始加载省份数据 url : /province

    @RequestMapping(value="/province")    public String  province(String type,Model model){        if(StringUtils.isBlank(type)){            type="2"; //         }        List<Area> provinceList = areaService.getAreaListByType(type);//省份        model.addAttribute("provinceList", provinceList);        return "/modules/auto";    }

六、根据 provinceId 获取省份下的 cityList 和 根据 cityId 获取 城市下的 countyList

    @RequestMapping(value="/cityJson")    @ResponseBody    public List<Area>  cityJson(String id){        List<Area> cityList= areaService.getAreaListByParentId(id);        return provinceList;    }

七、 简单效果展示
这里写图片描述

这里写图片描述

这里写图片描述