Ajax解析XML

/*
 *下面是一个ajax的XMLHttpRequest的使用
 */
var xhrequest;
function callback1(){//设置返回处理函数。
	if(xhrequest.readyState==4){
		if(xhrequest.status==200){
			var a=xhrequest.responseText;
			document.getElementById("pname").value=a;
		}
	}
}

if(window.XMLHttpRequest){//创建一个XMLHttpRequest对象
	xhrequest=new XMLHttpRequest();
}else {
	xhrequest=new ActiveXObject("Microsoft.XMLHTTP");
}
var url="/PersonnelMam/ds/GetPInfo";
			
xhrequest.open("POST", url, true);//设置发送方式,url和异步
	
xhrequest.setRequestHeader("content-type", "application/x-www-form-urlencoded");
//如果是post方式,需要设置请求头、清理缓存等。

xhrequest.send("pno="+pno);//发送

xhrequest.onreadystatechange=callback1;



/*
 *这是servlet部分--从service返回一个dto集合,用它生成一个select根节点,若干个option子节点的xml文档。	
*/
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		// 当前用户选择了哪个城市
		String city = request.getParameter("city");
		
		// 到数据库中查询有哪些地区
		UserService us = new UserService();
		
		List<AreaDTO> list = us.getArea(Integer.valueOf(city));
		
		StringBuffer sb = new StringBuffer("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
		sb.append("<select>");
		if (null!= list && !list.isEmpty())
		{
			Iterator<AreaDTO> it = list.iterator();
			while (it.hasNext())
			{
				AreaDTO item = (AreaDTO) it.next();
				sb.append("<option id=\"")
				  .append(item.getAid())
				  .append("\">")
				  .append(item.getArea())
				  .append("</option>");
			}
		}

		sb.append("</select>");
		
		System.out.println(sb.toString());
		
		response.setContentType("text/xml");
		PrintWriter out = response.getWriter();
		out.print(sb.toString());
		out.flush();
		out.close();
	}


/*
 *这是js部分,即ajax的callback部分,如何解析这个xml文档的部分。
*/
           if(xmlhttp.readystate == 4)
		{
			if(xmlhttp.status == 200)
			{
				// 处理响应信息
				// xml的解析
				var xmlDoc = xmlhttp.responseXML;
				// 找到根节点
				var oSel = xmlDoc.getElementsByTagName("select")[0];
				if(null != oSel)
				{
					var areaSel = document.getElementById("selArea");
					// 清空下拉列表的选项
					areaSel.options.length = 0;
					
					var ops = oSel.childNodes;
					if(null !=ops && 0 < ops.length)
					{
						for(var i = 0; i < ops.length; i++)
						{
							var option = ops[i];
							
							var value = option.getAttribute("id");
							
							var text = option.childNodes[0].nodeValue;
							
							
							var op = new Option(text, value);
							
							areaSel.options[areaSel.options.length] = op;
							
						}
						
					}
				}
			}
		}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值