javascript是
function loadXMLDoc()
{
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
x=xmlhttp.responseXML.documentElement.getElementsByTagName("CALL");
txt=x + x.length;
document.getElementById("myDiv").innerHTML=txt;
}
}
xmlhttp.open("GET","ajax/calls.xml",true)
xmlhttp.send();
}
响应(由firebug看到)是
<?xml version="1.0" encoding="ISO-8859-1"?>
<CALL>
<ID>0</ID>
</CALL>
我希望它能打印出类似“[0],1”的东西(即带有一个元素的列表,以及列表的长度),而是打印“[object NodeList] 0”,所以它不会看到任何“CALL”元素。出了什么问题?感谢。
答案 0 :(得分:2)
您的“x”变量将是NodeList,而不是字符串。您将不得不通过遍历<call>
元素或其他任何元素来计算出“txt”字符串应该是什么;这取决于你想看到什么。
另外,当你在所有的变量声明中留下var
时,一只小猫会在它的爪子上刺出一根刺。
答案 1 :(得分:2)
x是一个xml NodeList
var txt = x.item(0).nodeValue + ', ' + x.item(0).childNodes.length;
<强>更新强>
var call = xmlhttp.responseXML.documentElement;
var ids = call.getElementsByTagName('ID');
var txt = call.nodeName + ', ' + call.nodeValue + ', ' + ids.length;
childNodes字段返回3个元素,两个空文本节点(<ID>2</ID>
之前和之后)
var children = call.childNodes;
for (i=0; i<children.length; ++i) {
println("'" + children.item(i).textContent + "'");
}
打印
''
'0'
''