3

我有一个非常简单的 ajax 请求:

$.get(url, data)
   .done(function () { })
   .fail(function () { })

如果在 处有错误url,它将返回一个状态码,例如“500”。显然,jQuery 在这一点上考虑了它对jqxhr对象的承诺,因为它将执行.done而不是.fail. 我的问题是双重的:

默认情况下,.fail关于 ajax 的触发时间是什么时候,有没有办法改变这个默认值?

其次,对错误请求进行特殊处理的唯一方法似乎是:

.done(function (msg, tm, jqxhr) {
   if (jqxhr.status < 200 || jqxhr.status >= 300) performFailure();
});

有没有更好的方法来查找和处理被认为“不好”的响应?

4

3 回答 3

0

从 jQuery .get()文档中:

如果带有 jQ​​uery.get() 的请求返回错误代码,它将静默失败,除非脚本也调用了全局 .ajaxError() 方法。或者,从 jQuery 1.5 开始,jQuery.get() 返回的 jqXHR 对象的 .error() 方法也可用于错误处理。

(强调我的)

我在错误处理方面做得不多,但听起来您可能需要调用 ajaxError 来消除错误情况。

于 2012-04-06T19:41:04.413 回答
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*/,
     });
于 2012-04-06T19:44:41.617 回答
0

在进一步研究之后,似乎 jQuery 确实使用.fail()正确。问题是我的服务器因某些错误而发出 200。换句话说,这不是一个 jQuery 问题。

于 2012-04-06T19:51:42.717 回答