当firefox和chrome时,XMLHttpRequest状态始终为零

XMLHttpRequest status always zero when firefox and chrome

本文关键字:状态 XMLHttpRequest firefox chrome      更新时间:2023-09-26

我有一个代码如下:

<script>
var xmlhttp = new XMLHttpRequest();
var url = "http://localhost:9080/MyRestService/viewitems";
xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        doSomeFunction(xmlhttp.responseText);
    }
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
function doSomeFunction(response) {
    var arr = JSON.parse(response);
    var i;
    var out = "<table>";
    for(i = 0; i < arr.length; i++) {
        out += "<tr><td>" +
        arr[i].title +
        "</td><td>" +
        arr[i].singer +
        "</td></tr>";
    }
    out += "</table>";
    document.getElementById("id01").innerHTML = out;
}
</script>

在IE上运行良好,但在Chrome和Firefox中不起作用。基本上,在Firefox和Chrome中返回的xmlhttp.status总是0。在IE中,它返回200,这允许处理开始。

编辑:添加html页面的整个代码

编辑:我解决了问题。该问题是由于跨域脚本编写造成的。我在我的restful服务代码中添加了响应头访问控制参数来解决这个问题。

可能是Firefox和Chrome正在缓存该网站。如果服务器随后检测到没有任何变化,则它不以状态代码200来响应,而是以状态代码304"未修改"来响应。然后将从缓存中加载响应本身。