【问题标题】:Synchronous XMLHttpRequest when loading charts.js in to a div将 chart.js 加载到 div 时同步 XMLHttpRequest
【发布时间】:2016-11-15 10:22:59
【问题描述】:

目前我在页面左侧有一个菜单,当您单击导航时,它会使用以下内容加载页面:

if (this.id == "view-charts") {
    $("#rightContainer").load("view-charts.php");
    $(this).addClass("current");
} 

这对每个页面都很好,除了带有charts.js的当前页面,每当加载此页面时,我都会收到以下错误:

主线程上的同步 XMLHttpRequest 已被弃用,因为 其对最终用户体验的不利影响。如需更多帮助, 检查https://xhr.spec.whatwg.org/。 jquery.min.js:6

此外,如果我只是简单地将页面包含在父页面中,它会给出相同的错误。

【问题讨论】:

  • 您在代码中的某处设置了async: false,可能在$.ajaxStart() 中。您需要删除它
  • @RoryMcCrossan 我没有使用过异步,此外,即使没有ajax代码并且我只是PHP包含代码,它也会给出这个错误。
  • 您确定您的模板中默认不包含任何 JS 文件吗?您会看到此错误的唯一方法是发送同步 AJAX 请求。它可能是您正在使用的库的一部分。如果是这样,您应该找到替代方法,因为同步请求是非常糟糕的做法
  • 我已经取出了所有其他脚本和 js 文件。剩下的就是 jquery 库和charts.js 文件的链接。
  • @RoryMcCrossan 是否与图表页面上的内容有关?它使用以下window.onload = function() {,但是窗口已经加载并且内容正在加载到新的 div 中,而不是重新加载窗口?

标签: javascript jquery ajax chart.js


【解决方案1】:

为避免此警告,请勿使用:

异步:假 在您的任何 $.ajax() 调用中。这是 XMLHttpRequest 唯一被弃用的特性。

默认值为 async: true,因此,如果您根本不使用此选项,那么您的代码应该是安全的,如果该功能被真正删除(它可能不会——它可能会从标准中删除,但是我敢打赌浏览器会继续支持它很多年)。

【讨论】:

  • 我没用过,而且即使没有ajax代码,我只是简单的PHP包含代码,也会报这个错误。
猜你喜欢
  • 1970-01-01
  • 2015-04-13
  • 2021-02-08
  • 1970-01-01
  • 2017-11-12
  • 1970-01-01
  • 1970-01-01
  • 2020-04-06
  • 1970-01-01
相关资源
最近更新 更多