js解析ajax返回的xml字符串 本帖最后由 zyouping 于 2011-11-24 15:26:46 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Xml代码 <?xml version="1.0" encoding="gbk"?> <root> <checkresult> <%=result%> </checkresult> <checkresult> <%=message%> </checkresult> </root> 其中返回两个内容,一个结果数,以及一个针对该结果数的消息。 AJAX这个就不用去说怎么样操作了,下面这个函数只将返回字符串组成XML包的形式: //装载字符串,将字符串组成XML的形式返回 Html代码 function loadXML(xmlString) ...{ var xmldoc; try ...{ xmldoc = new ActiveXObject("Microsoft.XMLDOM"); if(!xmldoc) xmldoc = new ActiveXObject("MSXML2.DOMDocument.3.0"); } catch(e)...{} if(!xmldoc) ...{ return null; } else ...{ xmldoc.async = "false"; xmldoc.loadXML(xmlString); if(xmldoc.parseError.errorCode == 0 ) ...{ return xmldoc; } else ...{ return null; } } } 但其中需要注意一点,不能够直接利用返回得到的字节流,因为他们不属于字符串,这个时候需要将得到的字节流转换为字符串,才可以操作成功。我本人就遇到这个问题,直接操作就会出错,但我把这里传入的参数改为对应的XML字符串就可以,但我现在还不知道怎么样将字节流转换为字符串,因为总是要内网外网的切换做测试,挺麻烦的。 下面一个方面就是将XML中我们需要的数据,处理数组,这样我们就可以在其它的地方使用: //获得检测结果 Html代码 function getURLResult(URL) ...{ var url = URL; var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0"); xmlhttp.open("POST", url, false); xmlhttp.send(); var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0"); xmlDoc = loadXML(bytes2BSTR(xmlhttp.responseBody)); var NodeLists = xmlDoc.selectNodes("/root/checkresult"); var result = new Array(); for(var i=0;i<NodeLists.length;i++)...{ result[i] = NodeLists[i].text; } return result; } 在前台页面,就可以将需要的结果进行操作了。 多谢楼上的,你说的挺详细的!自己已经弄出来了,只是刚开始不怎么熟悉XML,不知道该如何遍历! CSV 换行的问题!!!! asp.net遗失焦点问题(急) 只有大牛能解决了,大牛们,come in!!!!!!!!!!!!! .NET中如何取得服务器的IP地址 谁知道GridView中的列宽如何设定 新手求助! 如何提升ASP.NET的权限?想在win2003中创建AD用户.... 我想去掉showmodaldialog打开的对话框的标题栏总是像是“人员选择——网页对话框”? 我是新手帮我看下这个问题!急急急,在线等候! 这个问题怎么解决 asp.net DllImport 通过相对路径引用 dll 清空hidden的赋值
<?xml version="1.0" encoding="gbk"?>
<root>
<checkresult>
<%=result%>
</checkresult>
<checkresult>
<%=message%>
</checkresult>
</root>
其中返回两个内容,一个结果数,以及一个针对该结果数的消息。 AJAX这个就不用去说怎么样操作了,下面这个函数只将返回字符串组成XML包的形式: //装载字符串,将字符串组成XML的形式返回
Html代码
function loadXML(xmlString)
...{
var xmldoc;
try ...{
xmldoc = new ActiveXObject("Microsoft.XMLDOM");
if(!xmldoc) xmldoc = new ActiveXObject("MSXML2.DOMDocument.3.0");
} catch(e)...{}
if(!xmldoc) ...{
return null;
} else ...{
xmldoc.async = "false";
xmldoc.loadXML(xmlString);
if(xmldoc.parseError.errorCode == 0 ) ...{
return xmldoc;
} else ...{
return null;
}
}
}
但其中需要注意一点,不能够直接利用返回得到的字节流,因为他们不属于字符串,这个时候需要将得到的字节流转换为字符串,才可以操作成功。我本人就遇到这个问题,直接操作就会出错,但我把这里传入的参数改为对应的XML字符串就可以,但我现在还不知道怎么样将字节流转换为字符串,因为总是要内网外网的切换做测试,挺麻烦的。 下面一个方面就是将XML中我们需要的数据,处理数组,这样我们就可以在其它的地方使用: //获得检测结果 Html代码
function getURLResult(URL)
...{
var url = URL;
var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
xmlhttp.open("POST", url, false);
xmlhttp.send();
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");
xmlDoc = loadXML(bytes2BSTR(xmlhttp.responseBody));
var NodeLists = xmlDoc.selectNodes("/root/checkresult");
var result = new Array();
for(var i=0;i<NodeLists.length;i++)...{
result[i] = NodeLists[i].text;
}
return result;
}
在前台页面,就可以将需要的结果进行操作了。