如何检测Ajax请求是否无法加载文件。
以下是我的参考代码:
var pro = undefined;
var xmlhttp;
if (window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}
else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
pro = JSON.parse(xmlhttp.responseText);
}
}
xmlhttp.open("GET","data.json",true);
xmlhttp.send();
请不要jQuery。
谢谢!
答案 0 :(得分:6)
您可以检查http状态是500还是500,这意味着请求http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#5xx_Server_Error
中发生了错误 if (xmlhttp.status >= 500){
alert('error');
}
注意:您也可以根据需要考虑其他http状态号
答案 1 :(得分:2)
onerror
回调来处理错误,如下所示:
xmlhttp.onerror = function onError(e) {
alert("Error " + e.target.status + " occurred while receiving the document.");
}
据我所知,jQuery库也使用这种方法。不确定所有浏览器都支持这个,但这肯定适用于Firefox。
答案 2 :(得分:1)
我所做的是使用一个名为'boomerang'的全局变量(我知道很诙谐)
所以当你发出请求时,make boomerang = 1然后成功make boomerang = 0
然后在您发出请求后的某个适当时间,您可以检查boomerang = 1或= 0
答案 3 :(得分:1)
您需要检查状态代码 - 4xx和5xx代码是错误。
这是一个代码列表:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
答案 4 :(得分:0)
你不会需要更多。除了评论之外,在else子句中做一些事情。
xmlhttp.onreadystatechange = function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
pro = JSON.parse(xmlhttp.responseText);
} else {
if (xmlhttp.readyState==4) {
// Something failed
}
}
}