我正在使用ajax和jquery将一个* synchonou *的http请求发送到Web应用程序中的php脚本,以便在用户决定离开页面而不是注销时注销用户
我正在使用以下代码:
function close()
{
return "If you exit you will be logged out ...!";
}
window.onbeforeunload = close;
$(window).unload( function () {
$.ajax({
url: "logout.php",
async:false,
success: function(msg){
alert( "You have been logged out ...!");}
});
});
除了按后退按钮之外,ajax在所有情况下都有效。当我按下后退按钮我甚至得到成功功能运行,但当我检查PHP脚本没有运行,因为我有一个fwrite功能,告诉我它工作。 除了后退按钮,它在其他情况下工作。
答案 0 :(得分:2)
我正在使用ajax和jquery发送一个异步的http请求
您引用的代码中的请求是同步的,而不是异步的。
如果您在看到PHP代码未运行时看到success
函数被调用,则表示您的浏览器缓存了之前的结果并重新使用它。您可能可以通过将cache: false
添加到您的请求选项来绕过它。
答案 1 :(得分:0)
它可能与浏览器后退/转发缓存有关。检查this answer以获取详细信息,以及该页面上接受的答案,该答案使用onunload
元素的<body>
属性进行操作。您的案例与链接问题中的案例相反,但可能有所帮助。