jQuery:从ajax清除错误状态代码的处理

时间:2012-04-06 19:33:00

标签: jquery ajax

我有一个非常简单的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();
});

有没有更好的方法来查找和处理被视为“糟糕”的回复?

3 个答案:

答案 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问题。