我正在尝试正确处理可能由jQuery中的任何AJAX调用返回的HTTP状态错误(404,501等)(我正在使用版本1.6.4)但是对于我的生活,我可以'得出适当的响应代码(所有值都是'0'或'错误',没有更具体的。)
更新:创建了一个JSFIDDLE here
更新:根据3nigma的建议添加了statusCode: { *** }
但不会触发
<!DOCTYPE html><html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script type="text/javascript">
function doAjax()
{
$.ajax({
type: "GET",
url: "http://www.non-existant-url.com/",
success: function(data, textStatus, jqXHR){
alert("Success");
},
error: function (xhr, textStatus, errorThrown) {
console.log("xhr.status: " + xhr.status);
console.log("xhr.statusText: " + xhr.statusText);
console.log("xhr.readyState: " + xhr.readyState);
console.log("xhr.responseText: " + xhr.responseText);
console.log("xhr.responseXML: " + xhr.responseXML);
console.log("textStatus: " + textStatus);
console.log("errorThrown: " + errorThrown);
console.log("xhr.redirect: " + xhr.redirect);
},
statusCode: {
404: function () { console.log("404"); },
501: function () { console.log("501"); },
502: function () { console.log("502"); }
}
});
}
</script>
</head>
<body><button onclick="doAjax();">Do AJAX</button></body>
</html>
我得到的输出如下:
仅供参考我在......
研究了文档http://api.jquery.com/jQuery.ajax/(“错误(jqXHR,textStatus,errorThrown)”部分) http://api.jquery.com/jQuery.ajax/#jqXHR
但是jqXHR似乎没有正确填充。我一定是做错了,现在我的想法已经用完,所以我真的很感激一些帮助。谢谢!
答案 0 :(得分:3)
尝试使用jquery 1.5中添加的statusCode
$.ajax({
...
statusCode: {
502: function() {
alert('502');
}
}
});
答案 1 :(得分:2)
我是一个numpty,出于安全原因,ajax不能跨域工作。如果我更改网址以使其定位与主机相同的域,则会奇迹般地填充状态代码和文本等。
我添加了另一个JSFIDDLE示例来演示此here。