执行跨域查询,如果运行的URL不可用(404),如何执行某个功能?我尝试这样的事情:
$.getJSON({
url:'example.php?callback=?',
statusCode: {
404:function(){alert('404');}
},
success :function(data){//do stuff}
});
执行跨域查询,如果运行的URL不可用(404),如何执行某个功能?我尝试这样的事情:
$.getJSON({
url:'example.php?callback=?',
statusCode: {
404:function(){alert('404');}
},
success :function(data){//do stuff}
});
我发现这种方法可以解决我遇到的类似问题,我想以不同的方式处理特定的状态代码。例如下面的“404”代码。
$.getJSON(AJAX_URL, function(data) {
//On Success do something.
}).fail(function(jqXHR) {
if (jqXHR.status == 404) {
alert("404 Not Found");
} else {
alert("Other non-handled error type");
}
});
有3个参数传递给fail方法:
jqXHR.fail(function(jqXHR, textStatus, errorThrown) {});
错误回调选项的替代构造, .fail() 方法替换了已弃用的 .error() 方法。有关实现细节,请参阅 deferred.fail()。
对于 jQuery 文档,请参阅:http :
//api.jquery.com/jQuery.ajax/#jqXHR http://api.jquery.com/deferred.fail/
$.getJSON({
url:'example.php?callback=?'
},
success :function(data){//do stuff}
})
.error(function(e, x) { if (x.status == 404) alert('404 - page was not available'); });
获取 JSONP 请求的状态码本质上是不可能的。
您可以向$.ajax
调用添加一般错误处理程序。
您必须success
在 JSON 对象上添加一个属性
var success = false;
$.getJSON(url, function(json) {
success = true;
// ... do what you need to do here
});
// Set a 5-second (or however long you want) timeout to check for errors
setTimeout(function() {
if (!success)
{
// Handle error accordingly
alert("Yup, 404"); // string was "Houston, we have a problem."
}
}, 5000);
如果您没有预料到超时问题,KeYan 通过检查 XHR 状态属性提出了一个很好的建议。我会投票支持他的解决方案,但我缺乏代表点。