ajax前后台交互实现省市区级联

1.html代码

<div class="row cl">
	<label class="form-label col-xs-4 col-sm-3">所在地址:</label>
	<div class="content">
	
		<span class="select-box pl-10" style="width:110px">
			<select id="province" class="select" οnchange="select_citys(this)">
				<option  value = "">请选择</option>
				<!-- 循环显示所有省份 -->
				<#list provinces as province>
		    		<option <#if area?? && area.province.id == province.id>selected="selected"</#if> value="${province.id}">${province.placeZh}</option>
	    		</#list>
			</select>
		</span>

		<span class="select-box pl-10" style="width:110px">
			<select id="city" class="select" οnchange="select_areas(this)">
				<#if area?? >
					<option value = "${area.city.id}">${area.city.placeZh}</option>
				<#else>
					<option value = "">请选择</option>
				</#if>
			</select>
		</span>

		<span class="select-box pl-10" style="width:110px">
			<select id="area" class="select">
				<#if area??>
					<option value = "${area.county.id}">${area.county.placeZh}</option>
				<#else>
					<option value = "">请选择</option>
				</#if>
			</select>
		</span>
		
	</div>
</div>
2.js代码

//通过省份ID查询查询所有的城市信息
function select_citys(obj){
	var provinceId = $(obj).val();
	if(!provinceId)return; // 声明变量就要判断是否为null
	$.ajax({
		type:"post",//请求方式get/post
		url:"/area/findAllArea",//请求对应的地址
		data:{"areaCode":provinceId},//往服务器传递的参数,
		success:function(data){//服务器交互成功调用的回调函数,data就是服务器端传递出来的数据
			var jdata = data.data; // 去前后空格
			if( data.code != 200){
				//查询失败!
			}else{
				var jsonData = eval(jdata);//将字符串的json对象转换成json
				$("#area").html("<option>-请选择-</option>");
				append_template(jsonData,"city");
			}
		}
	});
};
		
//通过省份ID查询查询所有的地区信息
function select_areas(obj){
	var cityId = $(obj).val();
	if(!cityId)return;
	$.ajax({
		type:"post",
		url:"/area/findAllArea",
		data:{"areaCode":cityId},
		success:function(data){
			var jdata = data.data;
			if( data.code != 200){
				//查询失败
			}else{
				var jsonData = eval(jdata);
				append_template(jsonData,"area");
			}
		}
	});
};
		
//封装其通用内容
function append_template(jsonData,target){
	var length = jsonData.length;
	var html = "<option>-请选择-</option>";
	for(var i=0;i<length;i++){
		html +="<option value='"+jsonData[i].id+"'>"+jsonData[i].placeZh+"</option>";
	}
	$("#"+target).html(html);
};
3.后台代码

@RequestMapping(value = "/area")
@RestController
public class AreaAPIController extends BaseController {

	@Autowired
	private AreaService areaService;

	@RequestMapping("/findAllArea")
	@ResponseBody
	public Result findAllArea(@RequestParam(required=false) Long areaCode) {
		List<Area> list = new ArrayList<Area>();
		try {
			if (null == areaCode) {
				//如果为空则查所有的省
				list = areaService.listAllProvince();
			} else {
				//不为空则根据父id查下面的所有子项
				list = areaService.listByParentId(areaCode);
			}
			return buildDataResult(list);
		} catch (BizException e) {
			return buildExceptionResult(e);
		}
	}
}
ps:首先进入页面加载所有的省份,并将已经存在的省市区加载在上面。省修改后添加城市信息,并把区域信息删除,加上“请选择”的option的标签;市修改后添加区域信息。



  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值