使用jQuery进行AJAX错误处理:我应该使用$ .ajaxSetup()还是$ .fn.ajaxError()
我想在用户发生AJAX错误时提醒用户。您可以通过$.ajaxSetup
做到这一点:
$.ajaxSetup({
error: function() {
alert("OOPS!")
}
});
But the jQuery docs recommend against this:
注:全球的回调函数应该 与各自全球 阿贾克斯事件处理 方法-.ajaxStart(),.ajaxStop(集), .ajaxComplete(),.ajaxError(), .ajaxSuccess(),.ajaxSend() - 而不是 之内的设置对象 $ .ajaxSetup()。
所以我想我应该这样做:
$("#some_random_div").ajaxError(function() {
alert("OOPS!")
});
这没有意义,我:AJAX的错误回调属于我作为一个整体,而不是特定的页面元素的应用。那么为什么回调函数应该与一个单独的页面元素相关联?
所以:为什么jQuery文档建议使用看起来不太可读的方法,哪种方法最好?
典型的用途是特定的页面元素绑定ajaxError到是要显示在您的错误信息会在div ;也许是页面顶部的“flash”消息div。这样你可以直接访问该div来追加你的消息。
但是,如果您不使用特定的DOM元素作为您的消息显示区域,那么您肯定可以将其绑定到$(document)
或其他此类全局元素。
jQuery 1.9中,ajax事件只能在'document'上使用,所以应该像'$(document).ajaxError(function(){...})'或'$(document).on(“ajaxError “,function(){...})'。文档说不使用'$ .ajaxSetup()'的原因是它们只是请求的* default *设置;任何定义它自己的'error'处理程序的请求都会破坏'$中的设置。ajaxSetup()'这可能不是你想要的。 – 2014-08-04 19:10:12
您可以连接起来的误差函数到全身像这样:
$('body').ajaxError(function() {
alert("OOPS!")
});
但是它的可读性不如'ajaxSetup()'方法?也就是说,这里的函数与文档的主体没有任何关系(换句话说,如果我可以通过用“主体”代替任何其他元素来达到同样的效果,这看起来就像是错误的方法) – 2010-07-27 20:04:49
可能存在它可能与单个控件相关的情况 - 例如当您有一个通过ajax往返数据库的自动完成时,而不是像提交时那样的整个页面。然后,这将确定是否要隔离页面组件上的错误,如果是这样,那么对错误的响应应该是什么,而不是采用更通用的方法。
我更喜欢ajaxSetup用于此目的。 – Kris 2012-04-24 10:36:24