覆盖Ajax Success事件

我试图覆盖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); } }); 

有全局ajaxSuccess回调:

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

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

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

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

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

尝试jQuery.ajaxSetup它可能会帮助你, 在这里阅读它

这样做:

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

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