基于SpringMVC 和MyBatis的实现省份城市之间的动态切换

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32285991/article/details/74949672

实现选择省份城市也跟着动态变化

1.建立数据库

我的例子是:三个属性scode(唯一标识一个省份或一个城市),sname(省份或城市的名称),pcode(省份的为0,城市的为省份的scode)

2.在jsp页面获得选中的省份的scode

<tr>
								<td style="width:75px;text-align: right;padding-top: 13px;">公司省份:</td>
								<td>
									<select class="chosen-select form-control" name="COMPANY_PROVINCE"
											id="COMPANY_PROVINCE" style="width:98%;"  onchange="change()"
											datatype="*" nullmsg="请选择省份">
										<option value="">请选择省份</option>
										<c:forEach items="${tmcitys}" var="tmcity">
											<option value="${tmcity.scode}">${tmcity.sname}</option>
										</c:forEach>
									</select>
								</td>
							</tr>

onchange当省份值改变是执行change函数

3.

 function change() {
            var ajaxData = $("#COMPANY_PROVINCE").val();//.find("option:selected").text() find("option:selected").//获得选中的省份的scode
            $.ajax({
                type: 'POST',
				url: "<%=basePath%>tmcompany/addCity.do",
				data: {"province_id":ajaxData},
                dataType: 'json',
                contentType: "application/x-www-form-urlencoded;charset=utf-8",
                success: function (data) {
                    document.getElementById("COMPANY_CITY").innerHTML = "";
				    console.log(data);
                    if (data.msg == "success") {
                        for(var i=0;i<data.varList.length;i++){
                            $("#COMPANY_CITY").append('<option value="' +data.varList[i].scode + '">' +data.varList[i].sname + '</option>')

                        }

                    } else if (data.msg == "error") {
                        alert('提交失败,请刷新重试', {icon: 2});
                    }
                },
                error: function (data) {
                    alert("error = " + data);
                }
            });
        }
4.获得的省份scode封装成json传到后台

5.在后台根据scode查询pcode'相等的城市的scode,返回给前台

6. 

/**传回城市页面
	 * @param
	 * @throws Exception
	 */
	@RequestMapping(value="/addCity")
	@ResponseBody
	public Object addCity()throws Exception{
		PageData pd = new PageData();
		pd = this.getPageData();
		Map<String, Object> map = new HashMap<String, Object>();
		String province_id = pd.getString("province_id");
		pd.put("provice_id",province_id.trim());
		List<PageData>	varList = tmCityService.findByProvince(pd);
		map.put("varList", varList);
		map.put("msg", "success");
		return AppUtil.returnObject(pd, map);
	}
7.在 前台获得map返回的数组,遍历数组,动态在js里写option(上面有代码),就能达到预期效果啦





猜你喜欢

转载自blog.csdn.net/qq_32285991/article/details/74949672