我有一个JavaScript函数:
function doWorkForJobCreate() {
$.ajax({ url: '<%:ConfigurationManager.AppSettings["SiteRoot"]%>/Job/JobCreate',
success: function (data, status, req) {
if (!processFKErrorHeader(req.getResponseHeader("fkerror"))) return;
$("#fktabsCreate").html(data);
}
})
}
和错误处理功能:
function processFKErrorHeader(fkerror){
// alert to user
// refresh the page
}
我想知道是否有办法为任何Ajax查询成功函数自动调用此函数?
这样,我就不必将错误处理器插入到每个Ajax成功函数中。
答案 0 :(得分:1)
答案 1 :(得分:1)
您可以使用.ajaxSuccess
添加全局成功处理程序,但不能阻止执行其他处理程序。
处理程序获取用于设置Ajax请求的settings
对象。 也许你可以覆盖那里的success
处理程序(未经测试):
$(document).ajaxSuccess(function(e, xhr, settings) {
if (!processFKErrorHeader(req.getResponseHeader("fkerror"))) {
settings.success = function() {};
}
});
更新:问题在于我不知道是否存在执行处理程序的保证订单。
答案 2 :(得分:0)
需要一些时间来弄清楚,但这是解决方案:
在jquery-1.4.2.js的源代码中,添加“我的代码”:
function success() {
if ( !processFKErrorHeader(xhr.getResponseHeader("fkerror")) ) //mycode
return; //mycode
// If a local callback was specified, fire it and pass it the data
if ( s.success ) {
s.success.call( callbackContext, data, status, xhr );
}
// Fire the global callback
if ( s.global ) {
trigger( "ajaxSuccess", [xhr, s] );
}
}