发送ajax调用onUnload被浏览器取消

时间:2017-01-07 20:55:45

标签: javascript ajax onbeforeunload

我有一个Web应用程序,当用户导航离开站点时,需要保存(ajax调用)任何未保存的用户输入数据。

我正在使用" Fetch"在beforeunload事件监听器中执行ajax调用(保存数据)。但浏览器似乎取消了ajax呼叫(当我查看Chrome的网络面板时,预检OPTIONS呼叫被取消)。

jquery有一种发送同步ajax调用的方法,但是已经弃用了。此外,解决方法是弹出浏览器口述的提示消息,让用户通过beforeUnload事件确认导航,但这不是业务要求的首选。

有没有让Ajax调用通过的解决方案?

我的代码示例如下。 :



window.addEventListener('beforeunload', beforeUnloadHandler);

beforeUnloadHandler(event) {
    fetch(url, {
      method: 'PUT',
      credentials: 'include',
      headers: {
        'Content-Type': 'application/json',
        Authorization: api.AUTHORIZATION_HEADER
      },
      body: JSON.stringify(data)
    })
  }




1 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,在将ajax调用设置为非异步时,它运行良好。

尝试将以下代码段添加到您的ajax调用中:

$.ajaxSetup({ cache: false })
$.ajaxSetup({ async: false })