Jquery Chrome中的Ajax同步请求失败

Jquery Chrome中的Ajax同步请求失败,jquery,ajax,Jquery,Ajax,Chrome的最新版本是否停止了同步Ajax调用?我们在执行同步Ajax调用时遇到错误。这个问题在我们更新到最新的Chrome版本73.0.3683.103后出现。同步调用目前在Firefox和IE上运行良好。我们的错误率正在下降 消息:“未能对“XMLHttpRequest”执行“发送”:未能加载“路径…”:页面中的同步XHR。” 名称:“网络错误” 有人能提出一个解决方案让Ajax同步调用工作吗。我有一些功能需要依赖于同步调用。是的,在Chrome中,他们最近刚刚在页面结束事件期间禁止了同步

Chrome的最新版本是否停止了同步Ajax调用?我们在执行同步Ajax调用时遇到错误。这个问题在我们更新到最新的Chrome版本73.0.3683.103后出现。同步调用目前在Firefox和IE上运行良好。我们的错误率正在下降

消息:“未能对“XMLHttpRequest”执行“发送”:未能加载“路径…”:页面中的同步XHR。” 名称:“网络错误”


有人能提出一个解决方案让Ajax同步调用工作吗。我有一些功能需要依赖于同步调用。

是的,在Chrome中,他们最近刚刚在页面结束事件期间禁止了同步ajax(比如
在卸载之前
卸载
)。在Chrome中,你不能再这样做了更新:您可以在v73和v74中再次使用,但(目前)计划在v75和v80中再次使用(2020年2月)。关注中的乐趣(感谢您发现这个问题)


现代的替代方法是使用,它允许浏览器离开页面,同时仍然让您有机会告诉服务器发生了什么。这不妨碍解雇佩奇。但这是唯一的帖子,因为它不会阻止页面删除,所以依赖于阻止页面删除的用例将无法使用它。

谢谢你们——Crowder和Charlietfl。使用信标解决了这个问题


如果有人正在寻找一个解决方案,可以遵循这个-

Beacon在某些情况下可以正常工作,但我发现它非常局限于您可以做什么和自定义(无法设置我的用例的标题)。另一个选项是使用
fetch
并将
keepalive
标志设置为true。根据链接:

keepalive选项表示请求可能“超过”请求 启动它的网页


它是异步的,但发送信标也是异步的。我只是对谷歌强迫这一改变感到恼火,因为它打破了许多我们希望在加载之前确保完成某项工作的用例……

现在,如果我能找到我的源代码就好了。。。这是最近的发展。奇怪的是,没有在或中的删除和弃用中列出。我认为这是在v75或v76中出现的问题,而不是在v73中遇到的问题。我们在v73中也看到了这个问题……不幸的是,这个版本的Chrome发行说明中没有提到任何内容。正如您所指出的,我们在卸载和卸载之前调用它。如果浏览器支持它,我们可以检查并使用该API。由于反冲,他们在73/74年再次通过不需要用户更新新浏览器的路线将其回滚。他们说它会以75美元的价格回来,但这可能会因为后推而改变。
window.onunload = function() {
  fetch('/analytics', {
    method: 'POST',
    body: "statistics",
    keepalive: true
  });
};