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