我试图覆盖jQuery ajax
函数来处理成功事件的默认操作,但也执行我在options
参数中使用的回调函数。
目的是在响应中返回标记,我总是想要从响应中删除以便在其他地方使用。
场景是:
有人可以帮忙吗? 我试过扩展
jQuery.ajax
jQuery.ajaxSuccess
jQuery.ajax.done
我的代码是:
var _ajaxSuccess = jQuery.fn.ajaxSuccess;
$.fn.extend({
ajaxSuccess: function (a)
{
_ajaxSuccess.apply(this, a);
}
});
答案 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中提到。