javascript - 收到 AJAX 响应时引发事件

标签 javascript ajax httpresponse

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

最佳答案

下面是包装全局 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() 多个事件处理程序(仅限现代浏览器),因此上述代码现在记录实际响应。

关于javascript - 收到 AJAX 响应时引发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23956671/

相关文章:

javascript - 如何让一个点沿着向量移动?

ajax - ajaxError 函数不返回 XmlHttpRequest.responseJSON

Ajax加载器图像: How to set a minimum duration during which the loader is shown?

html - Internet Explorer 中视频的 http 响应 206

javascript - 围绕任意 html 范围绘制轮廓

Javascript 闭包混淆

javascript 扫雷器放置了不必要的 "1"

jquery - 从 JSON 中提取多个数据集

c# - 通过 ASP.NET 代码隐藏下载文件时如何强制 Chrome 打开 "open file dialog"?

c# - 通过 Response 发送内存中生成的 .PDF 文件