这是我的第一次XMLHttpRequest尝试,虽然它有效(内容从xml文件加载,并在浏览器中正确显示),但Mozilla Console显示错误:
[15:05:54.147] TypeError: xmlTree is null @ http://127.0.0.1/scripts/firstExternal.js:37
如果内容加载,我不知道它是如何为空的?
这是从window.onload事件中调用的函数:
function getXML() {
if (window.XMLHttpRequest) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = (function () {
if (xhr.readyState = 4) {
if (xhr.status = 200) {
var xmlTree = xhr.responseXML;
var container = document.getElementById("container");
error here: var textList = xmlTree.getElementsByTagName("text");
for (var i = 0; i<textList.length; i++) {
var tempText = document.createTextNode(textList[i].textContent);
var tempElem = document.createElement("P");
tempElem.appendChild(tempText);
container.appendChild(tempElem);
}
} else {
document.getElementById("container").innerHTML = xhr.status + " - " + xhr.statusText;
}
}
});
xhr.open("GET","/res/sample.xml",true);
xhr.send();
}
}
和XML:
<?xml version="1.0" encoding="UTF-8"?>
<xml>
<text>This is a sentence.</text>
<text>This is the second sentence.</text>
<text>ain't one.</text>
<text>More bric a brac</text>
<text>Foo, bar, baz. Fizzbuzz forever.</text>
</xml>
编辑: 响应标题:
Date: Sat, 01 Feb 2014 23:31:03 GMT Server: Apache/2.2.22 (Ubuntu) Last-Modified: Sat, 01 Feb 2014 23:28:47 GMT Etag: "21d16-ed-4f160a6f67bb5" Accept-Ranges: bytes Content-Length: 237 Content-Type: application/xml
答案 0 :(得分:2)
您的测试以查看readyState和状态是否正常正在使用分配(=
)而不是相等测试(===
)。
因此,它们始终为true
,因此每次if
更改时都会运行readyState
的内容。
上次运行时,它们为4
和200
,因此会显示正确的数据。
以前每次都会收到错误。