XMLHttpRequest抛出错误responseXML = null,但无论如何都会出现内容

时间:2014-02-01 23:21:31

标签: javascript xmlhttprequest

这是我的第一次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

1 个答案:

答案 0 :(得分:2)

您的测试以查看readyState和状态是否正常正在使用分配=)而不是相等测试(===)。

因此,它们始终为true,因此每次if更改时都会运行readyState的内容。

上次运行时,它们为4200,因此会显示正确的数据。

以前每次都会收到错误。