如何使用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() 。
- 从Ajax GET调用返回JSON – 在除JSON对象中的第一个记录之外的所有记录上接收未定义的错误
- 单击/激活jQuery UI选项卡时触发函数?
- 使用jQuery操作包含XML的变量?
- 建议文本字段像 – 谷歌建议 – 使用AJAX / Jquery
- $ .Ajax .Append在Safari(iOS和OSX)上无法正常工作
- 在表单提交之前validation连接
- 当webdriver控件在框架中时,返回jQuery.active“)== 0正在等待提供的最大时间,然后引发exception
- 当用户将鼠标hover在图像上时,如何实时向用户显示图像上的(x,y)坐标?
- Phonegap请求的资源上没有“Access-Control-Allow-Origin”标头。 因此不允许原点’null’访问