多级联动系列——ajax调用XML实现三级联动

微笑ajax 使用起来特别的方便,再也不担心浏览器兼容问题了。用ajax调用XML页面中的内容,来生成三级联动,OK废话不多说,跟着我一步步写吧。

首先写一个XML文件。data.xml

<?xml version="1.0" encoding="UTF-8"?>
<list>
	<province name="河南" id='1'>
		<city name="焦作" id='11'>
			<area id='111'>武陟</area>
			<area id='112'>博爱</area>
			<area id='113'>修武</area>
		</city>
		<city name="郑州" id='12'>
			<area id='121'>金水区</area>
			<area id='122'>二七区</area>
			<area id='123'>中原区</area>
		</city>
	</province>
	<province name="河北" id='2'>
		<city name="石家庄" id='21'>
			<area id='211'>赵县</area>
			<area id='212'>正定</area>
			<area id='213'>平山</area>
		</city>
		<city name="承德" id='22'>
			<area id='221'>围场</area>
			<area id='222'>丰宁</area>
			<area id='223'>隆化</area>
		</city>
	</province>
	<province name="山东" id='3'>
		<city name="青岛" id='31'>
			<area id='311'>李沧</area>
			<area id='312'>崂山</area>
			<area id='313'>黄岛</area>
		</city>
		<city name="日照" id='32'>
			<area id='321'>东港</area>
			<area id='322'>岚山</area>
			<area id='323'>五莲</area>
		</city>
	</province>
</list>

然后就要用ajax调用XML  生成三级联动 了

下面是代码部分

<!DOCTYPE html>
<html>
	<head>
		<title>八部天龙</title>
		<meata http-equiv="contetn-type" content="text/html;charset=utf-8" />
		<script type="text/javascript" src="./jquery/jquery.js"></script>
		<script type="text/javascript">
			var xnlOb;
			$(document).ready(function(){
				$.get("data.xml",null,funciton(re){
					xmlOb=$(re);//把文档对象转化为选择器对象
					//开始获取所有的province标签
					var pOb=xmlOb.find("province");
					var pName,pId;
					$("[name='province']").append("<option value='0'>请选择</option>");
					pOb.each(function(){
						pName=$(this).attr('name');
						//alert(pName);
						pId=$(this).attr('id');
						$("[name='province']").append("<option value='"+pId+"'>"+pName+"</option>");
					})
				},'xml');
			})
			function getCity(){
				//首先获取选择的省份的名字 一级分类中
				var pValue=$("[name='province']>:selected").text();
				$("[name='city']").empty();//清空是为了防止多选几次出现的多次添加重复内容
				$("[name='city']").append("<option value='0'>请选择</option>");
				//然后接着找省下的城市
				xmlOb.find("province[name='"+pValue+"']").find("city").each(function(){
					$("[name='city']").append("<option value='"+$(this).attr('id')+"'>"+$(this).attr('name')+"</option>");
				});
			}
			function getArea(){
				var cValue=$("[name='city']>:selected").text();
				$("[name='area']").empty();
				$("[name='area']").append("<option value='0'>请选择</option>");
				//接着去XML中找市下面的县(区)
				xnlOb.find("city[name='"+cValue+"']").find('area').each(function(){
					$("[name='area']").append("<option value='"+$(this).attr('id')+"'>"+$(this).text()+"</option>");
				});
			}
		</script>
		<body>
			<select name="province" οnchange="getCity();"></select>
			<select name="city" οnchange="getArea();"></select>
			<select name="area"></select>
		</body>
	</head>
</html>

OK,就是这样的。根据这个三级联动,可以扩展N级联动。原理都是一样的。好了,就到这里了。 微笑


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现二级(多级)联的方法一般有两种,一种是通过页面刷新实现,另一种是通过Ajax实现。下面我将介绍一种基于Ajax实现方法。 首先,在前端页面中建立两个下拉框,第一个下拉框用于选择省份,第二个下拉框用于选择城市。当选择省份后,第二个下拉框中应该只显示该省份下的城市列表。 在后端,我们需要编写一个Web服务,用于获取城市列表。该Web服务应该接收省份名称作为参数,并返回该省份下的城市列表。在Asp.Net中,我们可以使用WebMethod来实现该功能。 然后,在前端页面中,我们需要使用Ajax调用该Web服务,并将返回的城市列表显示在第二个下拉框中。具体实现方法如下: ```javascript // 定义一个函数,用于获取城市列表 function getCityList(province) { $.ajax({ type: "POST", url: "CityService.asmx/GetCityList", data: "{'province':'" + province + "'}", contentType: "application/json; charset=utf-8", dataType: "json", success: function (response) { // 将返回的城市列表显示在第二个下拉框中 var cityList = response.d; var citySelect = $("#citySelect"); citySelect.empty(); for (var i = 0; i < cityList.length; i++) { var cityOption = "<option value='" + cityList[i] + "'>" + cityList[i] + "</option>"; citySelect.append(cityOption); } }, error: function (xhr, ajaxOptions, thrownError) { alert(xhr.status); alert(thrownError); } }); } // 当选择省份时,调用getCityList函数获取城市列表 $("#provinceSelect").change(function () { var province = $(this).val(); getCityList(province); }); ``` 需要注意的是,getCityList函数中的url应该指向我们编写的Web服务的地址。另外,我们还需要在Web.config文件中配置一些内容,具体可以参考相关文档。 这样,我们就实现了基于Ajax的二级(多级)联功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值