Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 收到AJAX响应时引发事件_Javascript_Ajax_Httpresponse - Fatal编程技术网

Javascript 收到AJAX响应时引发事件

Javascript 收到AJAX响应时引发事件,javascript,ajax,httpresponse,Javascript,Ajax,Httpresponse,我想知道,当我的网页收到任何AJAX响应时,是否可能引发一个事件。我在SharePoint中工作,因此Microsoft在将数据加载到Web部件时使用了很多AJAX,我希望在我的页面收到AJAX响应时引发一个事件,以便检查数据是否已加载到Web部件。任何帮助都将不胜感激。当向服务器发送请求时,我们可以根据响应执行一些操作。每次readyState更改时都会触发onreadystatechange事件。readyState属性保留XMLHttpRequest的状态。在onreadystatecha

我想知道,当我的网页收到任何AJAX响应时,是否可能引发一个事件。我在SharePoint中工作,因此Microsoft在将数据加载到Web部件时使用了很多AJAX,我希望在我的页面收到AJAX响应时引发一个事件,以便检查数据是否已加载到Web部件。任何帮助都将不胜感激。

当向服务器发送请求时,我们可以根据响应执行一些操作。每次readyState更改时都会触发onreadystatechange事件。readyState属性保留XMLHttpRequest的状态。在onreadystatechange事件中,我们指定当服务器响应准备好处理时将发生什么

当readyState为4且状态为200时,响应就绪:

下面的javascript代码将确定是否正确接收响应

xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
根据请求的状态,readyState属性可以具有以下值:-

0:请求未初始化

1:已建立服务器连接

2:收到请求

3:处理请求


4:请求已完成,响应已准备就绪

下面是一个包装全局XMLHttpRequest对象以记录所有open()ed URL的示例:

在该页面上运行时,会记录以下内容:

 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()使用多个事件处理程序(仅限现代浏览器),因此,上面的代码现在记录了实际的响应。

我是否必须将侦听附加到正在发出的确切请求,或者我是否可以侦听我的页面发出的所有XmlHttpRequest?因为您发出的请求将基于特定的xmlHttp对象“xmlHttp=new XmlHttpRequest();”并使用相同的对象“xmlHttp.send();”发送请求,您还必须使用相同的对象“xmlhttp.onreadystatechange=function(){..}”来接收该请求。我不知道是否有一个转折点,你可以一次得到所有的回应。但通常用于发送请求的xmlHttp对象是跟踪其状态所需的对象。是的,您可以使用调用orig的日志包装器重新定义window.XMLHttpRequest。不过,内置的开发工具更全面,有内置的控件,可以脱离域,并且已经安装在所有主要的浏览器中。
window.XMLHttpRequest
是否允许我监听来自窗口的所有请求?@dandavis我不清楚你的确切意思。你有我可以看的参考资料吗?谢谢你@dandavis。这正是我想要的。console.log未写入XMLHttpRequest overide。这是一个问题吗?@ExceptionLimeCat:我已经在这个页面的控制台上用chrome和firefox进行了测试,它工作正常。哪个浏览器给你带来了问题?我刚让它工作起来。SP不喜欢头部的脚本标记。我想要的实际效果是通过
$.get
实现的。在收到请求后,我可以在该方法中触发自己的事件来初始化代码。谢谢
 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