谁能告诉我,当用户执行以下操作时,我如何发出 AJAX 请求并将用户发送到其他页面?
- 点击浏览器的 next, prev btns。
- 以任何方式刷新页面(f5、ctrl+r、刷新 btn)。
- 尝试关闭浏览器的窗口(这里我不想重定向他,只是AJAX请求)。
我认为 window.onbeforeunload 可以做到,
window.onbeforeunload = function () {
makeAjaxCall();
------
------
}
// Ajax Call is successful
function makeAjaxCall_SuccessHandler() {
window.location.href = 'Home.html';
}
但它根本不起作用....... 在搜索这个主题后,我发现这是一种为了浏览器安全而制定的规则。 所以请告诉我如何做到这一点或实现这一目标的任何替代方法。
最佳答案
您没有描述您得到的实际行为,所以我有点猜测,但我认为您的问题出在 AJAX 的异步部分。 您会看到,当您的 onbeforeunload 处理程序执行时,它很可能会启动 AJAX 调用但是,它不会阻塞等待其结果返回。相反,执行将继续,并且 onbeforeunload 将在您从 AJAX 请求获得任何结果之前完成(如果进行任何调用)。
首先添加一些调试跟踪以验证您的处理程序是否实际执行。如果是,请添加一个空闲循环以使其保持忙碌(防止它返回)并查看 AJAX 调用是否通过(我会为此检查服务器端)。
如果情况确实如此,我想您将不得不修改空闲循环以查询某种标志。或者甚至更好,如果您使用的库允许它,使服务器调用同步。
关于javascript - 无法使用 "window.onbeforeunload"更改网页位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10010326/