【问题标题】:jQuery ajax requests as Deferred - wrap fail callbacksjQuery ajax 请求作为延迟 - 包装失败回调
【发布时间】:2015-03-05 16:42:18
【问题描述】:

我的网络应用程序的所有 ajax 调用都在表单中

$.post(url, data, successCallback).fail(failCallback)

如果出现某些情况,我需要引入一种中止机制。

由于调用 .abort() 也会触发 failCallback,因此我正在尝试找出一种方法(如果有)来拦截中止失败并且不触发回调。

【问题讨论】:

  • 可以在调用 abort 时向 xhr 对象添加一个属性,并在失败回调中检查该属性

标签: jquery ajax jquery-deferred abort


【解决方案1】:

我不认为你真的可以这样做,当调用abort 时,ajax 请求失败,并且调用了 fail 方法。

我认为你会得到最接近的方法是检查错误并有条件地调用函数,因为中止会将abort 作为错误(和状态)抛出

$.post(url, data, successCallback).fail(function(xhr, status ,err) {
   if (err !== 'abort')
       failCallback();
});

FIDDLE

【讨论】:

  • 感谢您的回复(也感谢@charlietfl),我担心这是不可能的。我找到了一些解决方案,但都假设在ajax 配置中使用error 属性。我的 failCallbacks 都特定于他们自己的请求(所以它不是一个通用的),但我想我会转换(或包装)它们以包含 abort 检查。
  • 可能值得注意的是,.abort() 方法仅(自然地)在 jqXHR 承诺上可用。此类承诺通过.done().fail().always() 传播,但通过.then(),保证发出新的承诺。
猜你喜欢
  • 2013-04-26
  • 2012-12-07
  • 1970-01-01
  • 1970-01-01
  • 2015-06-22
  • 1970-01-01
  • 2013-12-02
  • 2012-08-01
  • 2012-08-22
相关资源
最近更新 更多