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

时间:2010-07-27 19:43:09

标签: jquery ajax error-handling

我想在出现AJAX错误时提醒用户。您可以通过$.ajaxSetup

执行此操作
$.ajaxSetup({ 
  error: function() {
    alert("OOPS!")
  }
});

But the jQuery docs recommend against this

  

注意:全局回调函数应该   与各自的全球一致   Ajax事件处理程序   methods-.ajaxStart(),. ajaxStop(),   .ajaxComplete(),. ajaxError(),   .ajaxSuccess(),. ajaxSend() - 相反   而不是在设置对象中   $ .ajaxSetup()。

所以我想我应该这样做:

$("#some_random_div").ajaxError(function() {
  alert("OOPS!")
});

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

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

4 个答案:

答案 0 :(得分:7)

典型的用法是将ajaxError绑定到的特定页面元素是将显示错误消息的div;也许是页面顶部的“flash”消息div。通过这种方式,您可以直接访问该div以附加消息。

但是如果你没有使用特定的DOM元素作为消息显示区域,你当然可以将它绑定到$(document)或其他一些这样的全局元素。

答案 1 :(得分:2)

文档声明:

从jQuery 1.8开始,.ajaxError()方法只应附加到 document

http://api.jquery.com/ajaxError/

答案 2 :(得分:0)

您可以将错误功能连接到整个身体,如下所示:

$('body').ajaxError(function() {
    alert("OOPS!")
});

答案 3 :(得分:0)

可能存在可能与单个控件相关的情况 - 例如,当您拥有通过ajax往返数据库的自动完成时,而不是像提交时那样整个页面。然后,这将确定您是否要隔离页面组件上的错误,如果是,则应该对错误的响应应该是什么,而不是使用更通用的方法。