城市三級聯動Springmvc+mysql


昨天我做了一個功能,就是一個簡單的城市三級聯動,現在貼上分享

是采用springmvc+mysql去做的,最后台的東西我就不寫了,就是寫控制層+HTML+Jquery的部分,以下是控制層

 1  //獲取省市區
 2     @RequestMapping(value="province.do")
 3     @ResponseBody
 4     public Map<String, Object> province(HttpServletRequest request,HttpServletResponse response,ModelMap map){
 5         List<ProvinceInfo> prList=ps.getAllProvinceInfo();
 6         Map<String, Object> modelMap = new HashMap<String, Object>();  
 7         modelMap.put("data", prList);  
 8         return modelMap;
 9     }
10     //獲取市區
11     @RequestMapping(value="city.do")
12     @ResponseBody
13     public Map<String, Object> city(HttpServletRequest request,HttpServletResponse response,int province_id,ModelMap map){
14         List<CityInfo> cityList=ps.getCityInfoByFather(province_id);
15         Map<String, Object> modelMap = new HashMap<String, Object>();  
16         modelMap.put("data", cityList);
17         return modelMap;
18     }
19     //獲取區鎮
20     @RequestMapping(value="area.do")
21     @ResponseBody
22     public Map<String, Object> area(HttpServletRequest request,HttpServletResponse response,int city_id,ModelMap map){
23         List<AreaInfo> areaList=ps.getAreaInfoByFather(city_id);
24         Map<String, Object> modelMap = new HashMap<String, Object>();  
25         modelMap.put("data", areaList);
26         return modelMap;
27     }

 以下是HTML

 1 <div id="userAdd">
 2                               <span class="user-tip">服務地址:</span>
 3                                   <!-- 省區(示例 遼寧省) -->
 4                               <select id="Select1">
 5                               
 6                               </select>
 7                               <!-- 市區(示例 營口市) -->
 8                               <select id="Select2"></select>                             
 9                               <!-- 區(示例 站前區) -->
10                               <select id="Select3"></select>
11                               <input type="text" id="userInputAdd" value="請輸入您的詳細地址" />
12                           </div>

最后是Jquery

 1   /*初始化城市三級聯動*/
 2         $.ajax({
 3              type:"get",
 4              url:"province.do",
 5              dataType : "json",  
 6              success:function(data){
 7                  var selPro = data.data[0];
 8                  $.each(data.data, function(i, item) {          
 9                      var $option = '<option code='+item.province_id+' value='+item.province_name+'>'+item.province_name+'</option>';
10                      $('#Select1').append($option);
11                  })
12                  $('#Select1 option[value="'+selPro.province_name+'"]').attr("selected","true"); //當前省份默認選中
13                   var cityUrl ='city.do?province_id='+selPro.province_id;//請求城市列表地址
14                  $.ajax({
15                      url:cityUrl,
16                      success:function(data){
17                          var selCity=data.data[0];
18                          $.each(data.data,function(i,item){
19                              var $option = '<option code='+item.city_id+' value='+item.city_name+'>'+item.city_name+'</option>';
20                               $('#Select2').append($option);
21                          })
22                          $('#Select2 option[value="'+selCity.city_name+'"]').attr("selected","true"); //當前城市默認選中
23                           var areaUrl ='area.do?city_id='+selCity.city_id; //請求區域列表地址
24                          $.ajax({
25                              url:areaUrl,
26                              success:function(data){
27                                  $.each(data.data,function(i,item){
28                                      var $option = '<option code='+item.area_id+' value='+item.area_name+'>'+item.area_name+'</option>';
29                                       $('#Select3').append($option);
30                                  })
31                                  $('#Select3').attr('area_id',$('#Select3').find('option').eq(0).attr('code'));
32 
33                              }
34                          })
35                      }
36                  })
37              }
38         
39         
40         });
41         
42          //點擊選擇省份
43          $('#Select1').change(function(){
44              var _this=$(this);
45              var provinceCode = _this.find('option:selected').attr('code');
46              var cityUrl ='city.do?province_id='+provinceCode;
47              masterAddrC(cityUrl,'Select2');
48              setTimeout(function(){
49                  var cityCode = $('#Select2').find('option').eq(0).attr('code');
50                  var areaUrl = 'area.do?city_id='+cityCode;
51                  masterAddrA(areaUrl,'Select3');
52                  setTimeout(function(){
53                      $('#Select1').attr('province_id',provinceCode);
54                      $('#Select2').attr('city_id',$('#Select2').find('option').eq(0).attr('code'));
55                       $('#Select3').attr('area_id',$('#Select3').find('option').eq(0).attr('code'));
56                       
57                  
58                
59                     
60                  },300);
61              },300);
62          });
63         //點擊選擇城市
64          $('#Select2').change(function(){
65              var _this=$(this);
66              var cityCode = _this.find('option:selected').attr('code');
67              var areaUrl = 'area.do?city_id='+cityCode;
68              masterAddrA(areaUrl,'Select3');
69              setTimeout(function(){
70                  $('#Select2').attr('city_id',cityCode);
71                  $('#Select3').attr('area_id',$('#Select3').find('option').eq(0).attr('code'));
72                  
73              },100);
74          });
75         //點擊選擇區
76          $('#Select3').change(function(){
77              var _this=$(this);
78              var areaCode = _this.find('option:selected').attr('code');
79              setTimeout(function(){
80                  $('#Select3').attr('area_id',areaCode);
81              },100);
82          });

js最為復雜,邏輯需要一環扣一環,希望大家仔細思考。

還有一個忘說了,是jquery里的方法 在js代碼里的

  masterAddrC(cityUrl,'Select2'); 這句代碼 是個填充方法,我放到了page.js當中
代碼貼起
 1    function masterAddrC(url,select){
 2             $.ajax({
 3                 url:url,
 4                 success:function(data){
 5                      $('#'+select).html('');
 6                    $.each(data.data,function(i,item){
 7                          var $option = '<option code='+item.city_id+' value='+item.city_name+'>'+item.city_name+'</option>';
 8                         $('#'+select).append($option);
 9                    });
10                     
11                 },
12                 error:function(){
13                     console.log("fail");
14                     return;
15                 }
16             });
17         }

 

 


免責聲明!

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



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