我有一个代码如下:
<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服务代码中添加了响应头访问控制参数来解决问题。
答案 0 :(得分:0)
可能是Firefox和Chrome正在缓存网站。如果服务器然后检测到没有任何改变,则它不响应状态代码200而是响应状态代码304“未修改”。然后,响应本身将从缓存中加载。