0

到目前为止我有这个

window.addEventListener("beforeunload", function(e){
      $.post('insert.php', {'postmessage':'CALL bor.update_records_exit(\'' + authUser + '\');'}, function(data) {
            e.returnValue = null;
            return null;
      })
      .fail(function(response) {
            alert('Error: ' + response.responseText);
      });
});

这是有效的,但不可靠。有时请求已发送,有时未发送,我不明白为什么。

我知道这与请求的同步性有关。我尝试改用 .ajax() 并将 async 属性设置为 false,但后来我意识到 async:false 已被弃用。

我需要做的就是在用户关闭浏览器或选项卡时发送最终插入查询...请帮助。

4

1 回答 1

0

您是正确的,async: false已弃用,但是您别无选择,只能在beforeunload事件中发出 AJAX 请求时使用它。事实上,它只是它的唯一合法用途。

这是因为您需要等待请求完成才能允许关闭浏览器。您现在看到的某些请求失败的行为就是出于这个原因;浏览器在请求管道中过早关闭。

于 2020-11-15T16:23:44.870 回答