jQuery已弃用同步XMLHTTPRequest

像其他许多人一样,我的网站使用jQuery。 当我打开开发人员工具时,发现XMLHTTPRequest是一个警告

由于其对最终用户的经验的不利影响而被弃用。

我继续阅读部分文档 ,但这是相当技术性的。 有人可以用简单的术语来解释从XMLHTTPRequest转换到WHATWG的后果吗? 它说这发生在2012年。

另外,文档说,工作者之外的同步XMLHttpRequest正在被从Web平台上移除,当这种情况发生时,如果用户代理将他们放在服务中,他们是否需要修改他们现有的代码呢?

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

async: false 

在任何$.ajax()调用中。 这是XMLHttpRequest的唯一不赞成使用的function。

默认是async: true ,所以如果你从来不使用这个选项,那么你的代码应该是安全的,如果这个function真的被删除的话(它可能不会被删除),但是我会赌博浏览器将继续支持多年)。

接受的答案是正确的,但我发现另一个原因,如果你正在使用Visual Studio 2013或更高版本在ASP.NET下开发,并确保你没有做出任何同步ajax请求或在错误的地方定义任何脚本。

解决方法是通过取消选中VS工具栏下拉菜单中的“启用浏览器链接”来禁用“浏览器链接”function。 只要你这样做,并重新加载页面,警告应该停止!

禁用浏览器链接

这应该只在本地debugging时才会发生,但知道警告的原因还是很好的。

这发生在身体部分结束之前,在头部外部连接到外部的js。 你知道,其中之一:

<script src="http://somesite.net/js/somefile.js">

这与JQuery没有任何关系。

你可能会看到相同的做法是这样的:

 var script = $("<script></script>"); script.attr("src", basepath + "someotherfile.js"); $(document.body).append(script); 

但是我没有testing过这个想法。

没有一个以前的答案(这一切都是正确的)适合我的情况:我不使用jQuery.ajax()async参数,并且不包含脚本标记作为正在返回的内容的一部分喜欢:

 <div> SOME CONTENT HERE </div> <script src="/scripts/script.js"></script> 

我的情况是,我连续调用两个AJAX请求,目的是同时更新两个div:

 function f1() { $.ajax(...); // XMLHTTP request to url_1 and append result to div_1 } function f2() { $.ajax(...); // XMLHTTP request to url_2 and append result to div_2 } function anchor_f1(){ $('a.anchor1').click(function(){ f1(); }) } function anchor_f2(){ $('a.anchor2').click(function(){ f2(); }); } // the listener of anchor 3 the source of problem function anchor_problem(){ $('a.anchor3').click(function(){ f1(); f2(); }); } anchor_f1(); anchor_f2(); anchor_problem(); 

当我点击a.anchor3 ,会引发警告标志。我通过用click()函数replacef2来解决问题:

 function anchor_problem(){ $('a.anchor_problem').click(function(){ f1(); $('a.anchor_f2').click(); }); } 

我的工作:我使用asynchronous请求将代码转储到缓冲区。 我有一个循环检查每秒缓冲区。 当转储到达缓冲区时,我执行代码。 我也使用超时。 对于最终用户来说,页面就像使用同步请求一样工作。