正如我的标题所示,如果任何ajax get / post被触发,我需要运行一个函数。
我尝试使用
$(document).ajaxStart(function () {
console.log('a');
});
$(document).ajaxComplete(function () {
console.log('c');
});
但它只是第一次运行。
稍后它不会记录任何内容。我做错了什么?
我需要在Chrome扩展程序和谷歌图片搜索页面上执行此操作,因此在100张图片后,它会启动ajax函数以获取更多图像数据并在页面上显示。
答案 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方法本身可以接受beforeSend
和complete
中的函数。
.ajax({
// the rest of your parameters
complete: function(data) {
// do something
}
});
如果您不想基于每个请求指定这些,可以使用`.ajaxSetup'函数来修改默认值。
.ajaxSetup({
beforeSend: function() {
// custom logic
},
complete: function() {
// custom logic
}
});