覆盖Ajax Success事件

时间:2011-06-30 08:40:56

标签: javascript jquery ajax

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

场景是:

  • Ajax submit
  • Ajax成功
  • - 默认成功行动
  • - 调用Ajax成功回调

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

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

我的代码是:

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

3 个答案:

答案 0 :(得分:6)

全球ajaxSuccess回调:

  

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

这将让你在每次成功的AJAX调用时调用自己的函数,而不会干扰通常的成功回调。

您可能还需要查看其他各种global AJAX event handlers

如果这些回调没有适合您的时间或功能,那么您可以为$.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);
}

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

答案 1 :(得分:1)

尝试jQuery.ajaxSetup它可能会对您有所帮助,请阅读here

答案 2 :(得分:0)

这样做:

$.ajaxSuccess(function(){
    //somethingtodo
});

http://tutorialzine.com/2011/06/15-powerful-jquery-tips-and-tricks-for-developers/标题12中提到。