任何人都可以告诉我,如何在执行以下操作时发出AJAX请求并将用户发送到其他页面?
window.onbeforeunload = function () {
makeAjaxCall();
------
------
}
// Ajax Call is successful
function makeAjaxCall_SuccessHandler() {
window.location.href = 'Home.html';
}
但它根本不起作用........ 在搜索了这个主题后,我发现这是一种针对浏览器安全性的规则。 所以请告诉我如何做到这一点或任何其他方式来实现这一目标。
答案 0 :(得分:1)
我认为没有。
浏览器可以在操作后随时停止执行。 Ajax调用是非常长的操作。
使用onbeforeunload
,您可以询问用户问题,例如“确定使用吗?”。您必须返回字符串或将其分配给event.returnValue
您可以在此处阅读https://developer.mozilla.org/en/DOM/window.onbeforeunload
我认为对于您的问题,您可以尝试进行同步调用或尝试使用某些GET参数打开iframe,或者在此函数的正文中的iframe中发送表单数据。但我不确定时间。
答案 1 :(得分:1)
你没有描述你得到的实际行为,所以我在这里猜测,但我认为你的问题在于AJAX的异步部分。 你看,当你的onbeforeunload处理程序执行时,它可能很好地启动AJAX调用 BUT 它不会阻止等待其结果返回。相反,执行将继续,onbeforeunload将在您从AJAX请求获得任何结果之前完成(如果有任何调用的话)。
首先添加一些调试跟踪来验证您的处理程序是否实际执行。如果是,添加一个空闲循环以使其保持忙碌(阻止它返回)并查看AJAX调用是否通过(我会检查服务器端)。
如果确实如此,我猜你必须修改空闲循环以查询某种标志。或者甚至更好,如果你使用的库允许它,使服务器调用同步。