Chrome中的Ajax同步请求失败

Cou*_*art 17 ajax jquery

最新版本的Chrome是否已停止同步Ajax调用?进行同步Ajax调用时出现错误。我们更新到最新的Chrome版本-73.0.3683.103后,该问题突然出现。目前,同步调用在Firefox和IE上可以正常工作。我们正在犯错误

消息:“无法在'XMLHttpRequest'上执行'发送':无法加载'Path ...':页面关闭时的同步XHR”。名称:“ NetworkError”

有人可以建议一种解决方案以使Ajax同步调用正常工作。我有一些功能需要确定依赖同步调用。

T.J*_*der 14

是的,最近在Chrome中,他们不允许在页面结束事件(例如beforeunloadunload)期间使用同步ajax 。您根本无法再在Chrome中执行此操作。更新:您可以在v73和v74中再次使用,但是(暂时)计划在v75中再次消失,除非有更多的回击。跟随这个问题的乐趣(感谢patmortech找到该问题)

现代的替代方法是使用sendBeacon,它使浏览器可以离开页面导航,同时仍然让您有机会告诉服务器正在发生的事情。这不会阻止页面被解雇。但这只是POST,并且由于它不阻止页面解雇,因此依赖于阻止页面解雇的用例将无法使用。

  • 这是[与此更改相关的Chromium问题](https://bugs.chromium.org/p/chromium/issues/detail?id=952452)。由于存在抵制,他们通过一条不需要用户更新浏览器的路由将其再次以73/74的速度回滚。他们说它会以75的价格回来,但是由于回退可能会改变。 (3认同)
  • 可以检查[`navigator.sendBeacon`](https://developer.mozilla.org/en-US/docs/Web/API/Beacon_API/Using_the_Beacon_API)并使用该API(如果浏览器支持) (2认同)