【发布时间】:2011-04-19 08:38:34
【问题描述】:
我正在使用下面的解析器来解析 xml
function parseXML(text) {
var doc;
if(window.DOMParser) {
var parser = new DOMParser();
doc = parser.parseFromString(text, "text/xml");
}
else if(window.ActiveXObject) {
doc = new ActiveXObject("Microsoft.XMLDOM");
doc.async = "false";
doc.loadXML(text);
}
else {
throw new Error("Cannot parse XML");
}
return doc;
}
我不明白为什么它不能处理我通过 AJAX 获得的 XML 文档。
通过 AJAX 请求的结果:
X-Powered-By PHP/5.2.11
Content-Length 887
Keep-Alive timeout=5, max=95
Connection Keep-Alive
Content-Type text/xml
<?xml version="1.0" encoding="UTF-8"?>
<xml_test>wont work!</xml_test>
测试代码:
var xml = parseXML(data);
$(xml).find("xml_test").each(function()
{
console.info('found xml_test... never happen..');
});
但如果我这样使用它,它会很好地工作!
var data = '<xml_test>works</xml_test>';
var xml = parseXML(data);
$(xml).find("xml_test").each(function()
{
alert('this works!');
});
我知道这是一个具体的问题,但我会感谢您的帮助和/或建议...
提前致谢 佩德罗
【问题讨论】:
-
我的猜测是您尝试传递已解析的 XML(如 responseXML 文档或其他内容)。你能显示初始化要在此处传递的数据变量的代码吗? var xml = parseXML(数据); $(xml).find("xml_test").each(function() { console.info('found xml_test...永远不会发生..'); });
-
可能问题与 doc = parser.parseFromString(text, "text/xml"); ?!
-
Sergey, $.ajax({ url: '...' type: 'POST', dataType: 'xml', data: formulario.serialize(), timeout: 15000, success: function(数据){.........}
-
没错,所以你在这里得到你的 XMLDOM 文档 - 检查它:function(data) {alert(data.nodeType)}
标签: javascript jquery xml xml-parsing