Ajax解析XML

来源:互联网 发布:汽车租赁软件 编辑:程序博客网 时间:2024/05/22 12:48
/* *下面是一个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;}}}}}