/*
*下面是一个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;
}
}
}
}
}
Ajax解析XML
最新推荐文章于 2020-02-01 19:31:49 发布