对于Ajax查询,存在成功查询的常用功能?

时间:2011-02-01 14:10:56

标签: jquery ajax filter

我有一个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成功函数中。

3 个答案:

答案 0 :(得分:1)

您正在寻找广播给所有元素的ajaxSuccess event

例如:

$(document).ajaxSuccess(function(e, xhr, settings) {
    ...
});

答案 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] );
 }

}