記錄地區三級聯動查詢


先是前台展示效果:

點擊省份時,城市和區域也變化

點擊城市時,區域發生變化

代碼:以新增地址作為例子

1   @RequestMapping("/addAddress")
2     public String addAddress(HttpServletRequest request, ModelMap modelMap, HttpServletResponse response) {
3         //查出所有省份
4         List<Map<String, Object>> provinceList = addressService.getAllRegion();
5         modelMap.put("provinceList", provinceList);
6         return "wx/me/my_details_address_editor";
7     }

sql語句和數據庫數據:

 <select id="getAllRegion" resultType="java.util.Map">
               select id as id, area_name as name from eb_area where level=1
    </select>

 

 

查詢出所有省份在前台頁面展示,此時頁面中只有省份可以選擇

 前台代碼:

 1
 2             <form action="<%=basePath%>wx/me/saveAddress" method="POST" id="addAddressForm">
 3                 <div class="myDtl_cnt_list">
 4                     <div class="g-line g-clear">
 5                         <h5 class="fl">姓名</h5>
 6 
 7                         <div class="fr">
 8                             <input class="myDtlIdy_input" style="" type="text" placeholder="請輸入您的姓名" name="aName">
 9                         </div>
10                     </div>
11                     <div class="g-line g-clear">
12                         <h5 class="fl">手機號碼</h5>
13 
14                         <div class="fr">
15                             <input class="myDtlIdy_input" style="" type="text" placeholder="請輸入您的手機號碼" name="aPhone">
16                         </div>
17                     </div>
18                     <div class="g-line g-clear">
19                         <h5 class="fl">所在地區</h5>
20 
21                         <div class="fr">
22                             <label>
23                                 <select style="line-height:1rem;height:2rem;width:5rem;border:none;" id="province2"
24                                         name="provinceId">
25                                     <option>選擇省份</option>
26                                     <c:forEach items="${provinceList}" var="province">
27                                         <option value="${province.id}">${province.name}</option>
28                                     </c:forEach>
29                                     <option>選擇省份</option>
30                                 </select>
31 
32 
33                                 <select style="line-height:1rem;height:2rem;width:5rem;border:none;" id="city2"
34                                         name="cityId">
35                                     <option value="">選擇城市</option>
36                                 </select>
37 
38 
39                                 <select style="line-height:1rem;height:2rem;width:5rem;border:none;" id="area2"
40                                         name="areaId">
41                                     <option value="">選擇區域</option>
42                                 </select>
43 
44                             </label>
45                         </div>
46                     </div>
47                     <label class="ml-row19 g-mt1">
48                         <textarea style="width:19rem;" name="aAddress" id="aAddress"></textarea>
49                     </label>
50                 </div>
51                 <div class="myDtlALL_ok"><a class="lgi_btn g-btn-crimson" href="javascript:void(0);"
52                                             id="addAddress">保存</a></div>
53             </form>
54     

<script type="text/javascript">
    
    $("#addAddress").click(function () {
        $("#addAddressForm").submit();
    })
    //所在區域聯動列表

  
    setup("province2", "city2", "area2");//下面有加載的js代碼,定義一個通用方法,用於聯動查詢

    function setup(p, c, a) {
        $("#" + p + "").click(function () {
            province(p, c, a)  //點擊省份時聯動查詢省份,城市,區域方法
        });
        $("#" + c + "").click(function () {
            city(c, a);      //點擊城市的時候聯動查詢城市,區域的方法
        });

    }

    function province(p, c, a) {
        $.ajax({
            url: "<%=basePath%>wx/me/getCityByProvinceId?id=" + $("#" + p + "").val(),
            type: "POST",
            dataType: 'json',
            success: function (data) {
                $("#" + c + "").empty(); //清空下拉列表
                $.each($.parseJSON(data), function (i, json) {  //$.parseJSON用於格式化json數據
                    $("#" + c + "").append(" <option value='" + json.id + "'>" + json.name + "</option>");//增加城市的數據
                });
                city(c, a);  
            }
        });
    }
    function city(c, a) {
        $.ajax({
            url: "<%=basePath%>wx/me/getAreaByCityId?id=" + $("#" + c + "").val(),
            type: "POST",
            dataType: 'json',
            success: function (data) {
                $("#" + a + "").empty(); //清空下拉列表
                $.each($.parseJSON(data), function (i, item) {
                    $("#" + a + "").append(" <option value='" + item.id + "'>" + item.name + "</option>");//增加區域的數據
                });
            }
        });

    }


</script>

聯動查詢的后台代碼:

    @RequestMapping("/getCityByProvinceId")
    @ResponseBody
    public String getCityByProvinceId(Integer id, HttpServletResponse response) {
        //根據省份id查詢城市
        List<Map<String, Object>> cityList = addressService.getAllCitys(id);
        String json = JSON.toJSONString(cityList);
        return json;
    }

    @RequestMapping("/getAreaByCityId")
    @ResponseBody
    public String getAreaByCityId(Integer id, HttpServletResponse response) {
        //根據城市id查詢地區
        List<Map<String, Object>> areaList = addressService.getAreaByCityId(id);
        String json = JSON.toJSONString(areaList);
        return json;
    }

聯動查詢的sql語句:

  <select id="getAllCitys" resultType="java.util.Map" parameterType="java.lang.Integer">
               select id as id,area_name as  name from eb_area where level=2 and parent_id =#{id}
    </select>
    <select id="getAreaByCityId" resultType="java.util.Map" parameterType="java.lang.Integer">
               select id as id,area_name as  name from eb_area where level=3 and parent_id =#{id}
    </select>

 

 

 

 

 

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM