我已经构建了一个Web应用程序,它在许多不同的页面上大量使用了jQuery.ajax()函数。当然,每次使用jQuery.ajax()都会传递一个带有函数的配置对象,作为'success'属性的回调。
我现在遇到一种情况,如果服务器为任何给定的ajax请求返回某个错误代码,我想在多个页面上全局执行某个操作。我正在考虑通过在我的页面的标题中包含javascript来执行条件检查操作,以某种方式覆盖jQuery库的一部分,然后继续执行配置对象中传递的任何回调函数。这可能吗?我目前正在查看jQuery库的源代码,看看我是否可以这样做。
答案 0 :(得分:3)
我认为您需要查看全局Ajax事件处理程序。
http://api.jquery.com/category/ajax/global-ajax-event-handlers/
答案 1 :(得分:2)
在jQuery 1.5+中,您可以通过converters
的{{1}}选项完成此操作。通常,转换器只是转换从Web服务器接收的数据,并将其传递给成功回调,但如果需要,您可以在其中运行其他代码。
将此代码放入嵌入在您所有网页上的js文件中。
$.ajax
答案 2 :(得分:0)
我最终使用$.ajaxSetup
以全局方式覆盖成功回调,如下所示:
$.ajaxSetup({
beforeSend: function(xhr, options) {
var originalSuccess = options.success
options.success = function(data, textStatus, jqXhr) {
// trigger some sort of event here for interested listeners
originalSuccess.apply(this, arguments)
}
}
})