Javascript 未捕获类型错误:无法读取属性';nodeValue';未定义的
我正在尝试使用AJAX解析xml文件。有趣的是,当我为不同的XML文件尝试相同的代码时,它成功了。如果我添加一个Javascript 未捕获类型错误:无法读取属性';nodeValue';未定义的,javascript,ajax,xml,debugging,Javascript,Ajax,Xml,Debugging,我正在尝试使用AJAX解析xml文件。有趣的是,当我为不同的XML文件尝试相同的代码时,它成功了。如果我添加一个警报(txt)就在txt=txt+x[i]之后。子节点[0]。节点值+“”行,它显示所有名称的添加 这是我的密码: <!DOCTYPE html> <html> <head> <title>Test Page for XML</title> </head> <body> <p id="de
警报(txt)代码>就在txt=txt+x[i]之后。子节点[0]。节点值+“
”代码>行,它显示所有名称的添加
这是我的密码:
<!DOCTYPE html>
<html>
<head>
<title>Test Page for XML</title>
</head>
<body>
<p id="demo"> This is a test </p>
<button type="button" onclick="loadDoc()"> Click here to request data </button>
<script>
function loadDoc() {
var xhttp, xmlDoc, txt, x, i;
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
xmlDoc = xhttp.responseXML;
txt = "";
x = xmlDoc.getElementsByTagName('sort-name');
for (i = 0; i < x.length; i++) {
txt = txt + x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;
}
};
xhttp.open("GET", "MemberData.xml", true);
xhttp.send();
}
</script>
</body>
</html>
XML的测试页
这是一个测试
单击此处请求数据
函数loadDoc(){
var xhttp,xmlDoc,txt,x,i;
xhttp=newXMLHttpRequest();
xhttp.onreadystatechange=函数(){
如果(xhttp.readyState==4&&xhttp.status==200){
xmlDoc=xhttp.responseXML;
txt=“”;
x=xmlDoc.getElementsByTagName('sort-name');
对于(i=0;i”;
}
document.getElementById(“demo”).innerHTML=txt;
}
};
open(“GET”,“MemberData.xml”,true);
xhttp.send();
}
这是指向XML文件的链接
您是否想过先检查x[i].childNodes
的长度?您可以通过运行console.log(“xi childnodes”,x[i].childnodes”)来检查x[i]
代码>在该行之前。然后在浏览器中点击f12查看输出。更有可能的是,虽然有一个具有标记名排序名称的元素,但它不一定要有子节点列表。错误告诉您,对于i
,x[i]的某些值,子节点[0]
是未定义的您是对的,有一个具有标记名排序名称和长度0的元素。这在XML文件中意味着什么?它是一个没有文本节点的元素“排序名称”吗?是的,如果您搜索文档,您将在statedistrict>OH08
找到至少一个
。在尝试处理输入的可能属性之前,最好先验证输入。是否先检查x[i].childNodes
的长度?您可以通过运行console.log(“xi childnodes”,x[i].childnodes”)来检查x[i]
代码>在该行之前。然后在浏览器中点击f12查看输出。更有可能的是,虽然有一个具有标记名排序名称的元素,但它不一定要有子节点列表。错误告诉您,对于i
,x[i]的某些值,子节点[0]
是未定义的您是对的,有一个具有标记名排序名称和长度0的元素。这在XML文件中意味着什么?它是一个没有文本节点的元素“排序名称”吗?是的,如果您搜索文档,您将在statedistrict>OH08
找到至少一个
。在处理输入的可能属性之前,最好先验证输入