覆盖Ajax Success事件

Qpi*_*ate 2 javascript ajax jquery

我试图覆盖jQuery ajax函数来处理成功事件的默认操作,但也执行我在options参数中使用的回调函数.目的是在响应中返回标记,我总是希望从响应中删除以便在其他地方使用.

场景是:

  • Ajax提交
  • Ajax成功
  • - 违规成功行动
  • - 调用Ajax成功回调

有人可以帮忙吗?我试过扩展

  • jQuery.ajax
  • jQuery.ajaxSuccess
  • jQuery.ajax.done

我的代码是:

var _ajaxSuccess = jQuery.fn.ajaxSuccess;  
$.fn.extend({  
    ajaxSuccess: function (a)  
    {  
        _ajaxSuccess.apply(this, a);  
    }  
});
Run Code Online (Sandbox Code Playgroud)

mu *_*ort 6

有全球ajaxSuccess回调:

每当Ajax请求成功完成时,jQuery就会触发该ajaxSuccess事件..ajaxSuccess()此时已执行已使用该方法注册的所有处理程序.

这将允许您在每次成功的AJAX调用时调用自己的函数,而不会干扰通常的成功回调.

您可能还需要查看各种其他全局AJAX事件处理程序.

如果这些回调没有适合您的时间或功能,那么您可以编写自己的包装$.ajax并使用它:

function wrapped_ajax(options) {
    var success = options.success;
    options.success = function(data, textStatus, jqXHR) {
        // Do whatever needs to be done here.
        if(success)
            success(data, textStatus, jqXHR);
    };
    return $.ajax(options);
}
Run Code Online (Sandbox Code Playgroud)

在调用原始成功回调之前,您可以对通常的成功回调参数执行任何操作.你打电话wrapped_ajax的方式完全一样$.ajax.您也可以使用相同的技术挂钩其他回调.