如何使用jQuery检测“任何”ajax请求?

我有一个页面,我可以插入一些javascript / jquery来操作输出。 我对页面标记等没有任何其他控制权。

我需要在页面上的每个元素之后通过jquery添加一个额外的元素。 问题是元素是通过现有页面上的异步调用生成的,该调用发生在$(document).ready完成之后。

本质上,我需要一种方法在页面加载后调用我的jquery并完成后续的ajax调用。 有没有办法检测页面上任何ajax调用的完成情况,然后调用我自己的自定义函数在新创建的s之后插入其他元素?

不幸的是,这不适用,因为看起来OP似乎并没有使用 $.ajax() 或任何jQuery ajax方法来实际加载内容,而是将它留在这里,以防未来的googler正在这样做。


你可以在这里使用满足你需求的任何全局ajax事件 ,你可能在$.ajaxComplete()$.ajaxSuccess()

例如:

 $(document).ajaxSuccess(function() { alert("An individual AJAX call has completed successfully"); }); //or... $(document).ajaxComplete(function() { alert("ALL current AJAX calls have completed"); }); 

如果你想运行一些通用函数,那么将它们附加到文档(它们只是下面的事件)。 如果你想特别展示一些东西,例如模态或消息,你可以使用它们更整洁(虽然这似乎不是你所追求的),像这样:

 $("#myModal").ajaxComplete(function() { $(this).fadeIn().delay(1000).fadeOut(); }); 

这个例子只是在使用jQuery的ajax调用的开始和结束时显示和隐藏元素:

  $("#contentLoading").ajaxSend(function(r, s) { $(this).show(); $("#ready").hide(); }); $("#contentLoading").ajaxStop(function(r, s) { $(this).hide(); $("#ready").show(); }); 

#contentLoading是一个gif图像进度指示器。

我可以理解,你在准备好的处理程序中使用了一些jQuery的Ajax函数。 所以你可以传递另一个函数,它将在你的Ajax函数得到响应后调用。 例如

 $(document).ready(function(){ $("#some_div").load('/some_url/', function(){ /* Your code goes here */ }); }); 

您可以重写XMLHttpRequest对象的send()函数。

在这里使用纯Javascript查看解决方案。

你可以使用.live() / .delegate() 。