我有一个非常简单的ajax请求:
$.get(url, data)
.done(function () { })
.fail(function () { })
如果url
出现错误,它将返回状态代码,例如“500”。显然,jQuery在jqxhr
对象上考虑它的承诺,因为它将执行.done
而不是.fail
。我的问题有两个:
默认情况下,当针对ajax触发.fail
时,有没有办法更改此默认设置?
其次,对坏请求进行特殊处理的唯一方法似乎是:
.done(function (msg, tm, jqxhr) {
if (jqxhr.status < 200 || jqxhr.status >= 300) performFailure();
});
有没有更好的方法来查找和处理被视为“糟糕”的回复?
答案 0 :(得分:0)
来自jQuery .get()文档:
如果使用jQuery.get()的请求返回错误代码,将失败 默默地除非脚本也调用全局.ajaxError() 方法。或者,从jQuery 1.5开始,使用.error()方法 jQuery.get()返回的jqXHR对象也可用于出错 处理。
(强调我的)
我没有做过很多错误处理,但听起来你可能需要调用ajaxError来冒出错误条件。
答案 1 :(得分:0)
查看.ajax函数的文档,它有一个非常好的错误处理程序:http://api.jquery.com/jQuery.ajax/您可能希望使用此函数而不是get()。 (这两个基本相同,正如您在此页面中看到的那样:http://api.jquery.com/jQuery.get/);
您的代码的示例如下:
$.ajax({
url: url,
data: data,
error: /*error function*/,
success: /*success function*/,
});
答案 2 :(得分:0)
在进一步研究之后,似乎jQuery确实正确地使用了.fail()
。问题是我的服务器因某些错误而发出200。换句话说,这不是一个jQuery问题。