如何在每个ajax请求上调用特定函数

时间:2012-05-09 08:00:27

标签: javascript html ajax jquery

我有一个问题,我的项目中有几个页面,我在项目中使用了很多ajax请求,但现在我认为无论何时调用ajax请求,都会调用一个函数,并且每当该请求结束另一个函数时将会通知。我怎么能在全球范围内做到这一点我知道我可以把它放在每个ajax请求中,但我需要一个解决方案,我在一个地方做,它在整个项目中都有效。

$(document).read(function(){
 // Suppose this document load function is written on layout page and every page is  inherited from this page
});

4 个答案:

答案 0 :(得分:5)

使用ajaxSetup,例如

$.ajaxSetup({
    beforeSend: function() {
        console.log('test');
    },
    complete: function() {
        console.log('completed');
    }
});

将为每个 ajax请求设置beforeSend处理程序。请注意,ajaxSetup可以采用$.ajax可以选择的任何选项。

答案 1 :(得分:2)

您应该为ajax创建一个包装函数,然后使用该函数。就这样,你有"中心"控制ajax调用。类似的东西:

//fast and crude way to extend jQuery
$.fn.customAjax = function(params){

    //contains defaults and predefined functions
    var defaults = {
        complete : function(){...default complete hander...},
        beforeSend : function (){...default beforeSend handler}
        ...
    }

    //merge settings
    var finalParams = $.extend({},defaults,params);

    //call ajax and return the deferred
    return $.ajax(finalParams);
}

//use it like
$.customAjax({
   url : ...,
   method : ...,
   data: ...,
   complete : function(){...} //redefining in the call will override the defaults
});

答案 2 :(得分:1)

.ajaxStart

注册第一个Ajax请求开始时要调用的处理程序。

.ajaxSucess

在Ajax请求成功完成时附加要执行的函数。

for Detail doc:     http://api.jquery.com/category/ajax/

答案 3 :(得分:0)

尝试这样的事情:

$.ajax({
  url: "test.html",
  context: document.body
}).done(function() { 
   $.ajax({
     url: "anotherMethod.html",
     context: document.body
   });
});
});

这意味着无论何时ajax呼叫成功呼叫你的欲望呼叫。