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

时间:2015-03-20 02:05:05

标签: javascript ajax json

我有一个代码如下:

<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,这允许处理开始。

EDITED:添加html页面的整个代码

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

1 个答案:

答案 0 :(得分:0)

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