如果ajax get / post被触发,则运行一个函数

时间:2015-04-23 17:35:02

标签: javascript jquery ajax

正如我的标题所示,如果任何ajax get / post被触发,我需要运行一个函数。

我尝试使用

    $(document).ajaxStart(function () {
        console.log('a');
    });
    $(document).ajaxComplete(function () {
        console.log('c');
    });

但它只是第一次运行。

稍后它不会记录任何内容。我做错了什么?

我需要在Chrome扩展程序和谷歌图片搜索页面上执行此操作,因此在100张图片后,它会启动ajax函数以获取更多图像数据并在页面上显示。

3 个答案:

答案 0 :(得分:2)

即使没有使用How to check if HTTP requests are open in browser?

等技术的jQuery进行AJAX请求,您可能希望它能够正常工作
(function() {
  var oldOpen = XMLHttpRequest.prototype.open;
  XMLHttpRequest.prototype.open = function(method, url, async, user, pass) {
    console.log('Request went out', arguments);
    oldOpen.call(this, method, url, async, user, pass);
  }
})();

答案 1 :(得分:1)

你可能正在寻找这样的东西:

$.ajaxSetup({
   success: function(){ 
      callYourFunctionHere();
   }
});

OR

$(document).bind("ajaxSend", function(){
   alert('ajax fired');
   callYourFunctionHere();
});

希望它适合你。

答案 2 :(得分:0)

ajax方法本身可以接受beforeSendcomplete中的函数。

.ajax({
  // the rest of your parameters
  complete: function(data) {
    // do something
  }
}); 

如果您不想基于每个请求指定这些,可以使用`.ajaxSetup'函数来修改默认值。

.ajaxSetup({
  beforeSend: function() {
    // custom logic
  },
  complete: function() {
    // custom logic
  }
});