使用jQuery进行AJAX错误处理:我应该使用$ .ajaxSetup()还是$ .fn.ajaxError()

Tom*_*man 12 ajax error-handling jquery

我想在出现AJAX错误时提醒用户.你可以这样做$.ajaxSetup:

$.ajaxSetup({ 
  error: function() {
    alert("OOPS!")
  }
});
Run Code Online (Sandbox Code Playgroud)

但jQuery文档建议不要这样做:

注意:全局回调函数应该使用它们各自的全局Ajax事件处理程序方法设置 - .ajaxStart(),. ajaxStop(),. ajaxComplete(),. ajaxError(),. ajaxSuccess(),. ajaxSend() - 而不是在$ .ajaxSetup()的设置对象.

所以我想我应该这样做:

$("#some_random_div").ajaxError(function() {
  alert("OOPS!")
});
Run Code Online (Sandbox Code Playgroud)

这对我来说没有意义:AJAX错误回调与我的应用程序整体有关,而不是特定的页面元素.那么为什么回调函数应该与单个页面元素相关联?

那么:为什么jQuery文档建议使用看起来不太可读的方法,哪种方法最好?

Jac*_*son 7

典型的用法是将ajaxError绑定到的特定页面元素是将显示错误消息的div; 也许是页面顶部的"flash"消息div.这样您就可以直接访问该div以附加您的消息.

但是,如果您没有使用特定的DOM元素作为消息显示区域,那么您当然可以将其绑定到$(document)其他类似的全局元素.

  • 从jQuery 1.9开始,ajax事件应该只用在`document`上,所以它应该读作`$(document).ajaxError(function(){...})`或`$(document).on( "ajaxError",function(){...})`.文档说不使用`$ .ajaxSetup()`的原因是它们只是请求的*default*设置; 定义自己的`error`处理程序的任何请求都会破坏`$ .ajaxSetup()`中的一个集合,这可能不是你想要的. (2认同)