我有以下代码:
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。我错过了什么吗?
答案 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。