我想知道在我的网页收到任何AJAX响应时是否可以举起活动。我在SharePoint工作,所以Microsoft有很多AJAX将数据加载到webparts中,我想在我的页面收到AJAX响应时发出一个事件,这样我就可以检查数据是否已经存在加载到webpart。任何帮助将不胜感激。
答案 0 :(得分:1)
这是一个包装全局XMLHttpRequest对象以记录所有open()ed URL的示例:
(function(){
var ajaxOpen=window.XMLHttpRequest.prototype.open;
window.XMLHttpRequest.prototype.open=function(m,u,a){
this.addEventListener("load", function(){ console.log("ajax loaded", new Date(), m, u, a ); });
return ajaxOpen.call(this,m,u,a);
};
}());
$.get("/", function(e){
console.log(e.length+" bytes fetched");
});
在此页面上运行时,会记录以下内容:
ajax loaded Fri May 30 2014 09:56:34 GMT-0500 (Central Daylight Time) POST /posts/23957352/edit-submit/b4dd7272-6618-4c79-9810-e8ff71122b51 true
请注意,jQuery仅用于显示所有ajax调用都受到影响而不修改特定库或现有代码。通过一些修改,可以记录更多细节,如数据,响应大小,调用持续时间等等。
这样做的RAM成本很低,而旧版浏览器可能不喜欢拥有"主机对象"搞砸了,但这种代码风格可以用于调试,单元测试或性能分析。
编辑:我发现ajax允许使用addEventListener()(仅限现代浏览器)允许多个事件处理程序,因此上面的代码现在记录实际响应。答案 1 :(得分:0)
当发送对服务器的请求时,我们可以根据响应执行一些操作。每次readyState更改时都会触发onreadystatechange事件.readyState属性保存XMLHttpRequest的状态。在onreadystatechange事件中,我们指定在准备好处理服务器响应时会发生什么。
当readyState为4且status为200时,响应就绪:
以下javascript代码将确定是否正确收到回复。
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
readyState属性可以根据我们的请求状态具有以下值: -
0:请求未初始化
1:建立服务器连接
2:收到请求
3:处理请求
4:请求已完成且响应已准备好