jquery ajax同步http请求

时间:2011-04-14 08:55:23

标签: php javascript jquery ajax

我正在使用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功能,告诉我它工作。 除了后退按钮,它在其他情况下工作。

2 个答案:

答案 0 :(得分:2)

  

我正在使用ajax和jquery发送一个异步的http请求

您引用的代码中的请求是同步的,而不是异步的。

如果您在看到PHP代码未运行时看到success函数被调用,则表示您的浏览器缓存了之前的结果并重新使用它。您可能可以通过将cache: false添加到您的请求选项来绕过它。

答案 1 :(得分:0)

它可能与浏览器后退/转发缓存有关。检查this answer以获取详细信息,以及该页面上接受的答案,该答案使用onunload元素的<body>属性进行操作。您的案例与链接问题中的案例相反,但可能有所帮助。