我正在使用该jQuery.load()
方法发出 AJAX 请求并将一些内容插入到我的页面中。
我希望能够添加某种全局处理程序来检查我成功的AJAX 请求的结果,然后根据返回的数据选择性地调用全局错误处理程序。
我已经能够jQuery.get()
通过使用$.ajaxPrefilter()
检查请求的方法覆盖提供的“成功”方法来实现“正常”请求。(在这个 StackOverflow 答案上找到:https ://stackoverflow.com/a/6373965 )
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
var originalSuccess = options.success;
options.success = function (data) {
if(hasErrors(data)) {
//forward to error event handler or redirect to login page for example
}
else {
if (originalSuccess != null) {
originalSuccess(data);
}
}
};
});
我的问题是该方法不适用于从该jQuery.load()
方法触发的 AJAX 请求。我查看了 jQuery 源代码,它正在这样做:
jQuery.ajax({ .. })
.done(function(responseText) {
// Inserts HTML into DOM.
})
.complete(callback);
无论如何要检查成功 .ajax()
方法的结果并防止延迟.done()
函数被触发?
理想情况下,我想要一个可以插入上述.ajaxPrefilter()
方法的解决方案,以便这种行为对整个站点都是全局的。