【发布时间】:2015-06-11 19:34:25
【问题描述】:
我正在尝试使用 ajax 从 xml 文件中检索一些数据
<?xml version="1.0" encoding=UTF-8"?>
<user>
<u_idno>1</u_idno>
<u_name>nobody</u_name>
<u_srnm>nothing</u_srnm>
<u_role>linux</u_role>
</user>
<user>
<u_idno>2</u_idno>
<u_name>yesbody</u_name>
<u_srnm>something</u_srnm>
<u_role>administrator</u_role>
</user>
但我遇到了一个错误
Uncaught TypeError: Cannot read property 'getElementsByTagName' of null
我不确定为什么它会说 null,我一直在疯狂地搜索以找出我做错了什么,但我一无所知。我的javascript如下
function f_ajax() {
var lv_request;
try {
lv_request = new XMLHttpRequest();
} catch (error) {
lv_request = new ActiveXObject("Microsoft.XMLHTTP");
}
lv_request.onreadystatechange = function() {
if(lv_request.readyState == 4 && lv_request.status == 200) {
lv_xml = lv_request.responseXML;
lv_row = lv_xml.getElementsByTagName("user");
lv_output = null;
for (lv_cnt = 0; lv_cnt < lv_row.length; lv_cnt++) {
lv_output = lv_output + lv_row[lv_cnt].childNodes[0].nodeValue;
}
document.getElementById("h2_ajax").innerHTML = lv_row;
}
}
lv_request.open("GET", "data.xml", true);
lv_request.send();
};
f_ajax();
【问题讨论】:
-
lv_request.responseText中有什么内容? -
输出整个xml文件
-
如果您在
responseText中看到的值不是完全有效的 XML,您将在responseXML中看到 NULL。 -
看看下面的帖子:stackoverflow.com/questions/3781387/responsexml-always-null -- 特别是关于将
responseText解析回 XML 文档的答案(即 Kenny 的答案)。 -
您的开始
<u_role>标记与结束</role>标记不匹配。这是复制错误还是在真实文件中?
标签: javascript html ajax xml