为什么在JavaScript中读取XML文件时会得到null结果?

时间:2016-01-28 17:19:33

标签: javascript xml

我有以下代码:

function loadXMLDoc() {

        var xhr = XMLHttpRequest();
        xhr.onreadystatechange = function () {
            //read the file and get results
            getDomicilesFromXML(xhr); //separate function (this is not the problem)

        };
        xhr.open('GET', TheXMLFile.xml', false);
        xhr.send();

    }

在网页的初始化功能中调用此函数。 " TheXMLFile"是一个XML文件,位于我的网站的根项目目录中。它似乎没有读取文件,因为结果始终为null。我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

在准备好读取响应之前,

onreadystatechange多次触发重复 。您需要先检查xhr.readyState以查看是否已准备就绪,然后status查看是否成功。

xhr.onreadystatechange = function () {
    if (xhr.readyState === 4) {
        if (xhr.status == 0 || (xhr.status >= 200 && xhr.status < 300)) {
            //read the file and get results
            getDomicilesFromXML(xhr); //separate function (this is not the problem)
        }
    }
};

xhr.status == 0是一种解决方法我不确定这些天我们是否仍然需要,某些浏览器[以前用?]通过缓存响应执行此操作。)

我建议您从false电话中移除open。几乎不需要强制HTTP请求同步,并在请求期间锁定浏览器的UI。