Javascript加载/卸载获取PHP $_SESSION变量


Javascript load/unload to get PHP $_SESSION variables

我想有一个javascript函数调用页面加载和卸载将设置和取消设置会话变量。目前javascript(与PHP一致)看起来像这样(使用jQuery)

window.onbeforeunload = function() {
   $.post('Example.php?y=".$id."&dir=0');
} 
$(document).ready(function() {
   $.post('Example.php?y=".$id."&dir=1');
}); 

这些包含在php脚本中,其中$id是传递给页面的变量。php是一个使用ajax调用的脚本,它只是将变量$id添加到存储为$_SESSION变量的数组中,如果dir=1,并从数组中删除该变量,如果dir=0。

问题是,这只是有时工作如预期。当我加载页面时,会话数组总是被正确更新。当我卸载页面时,它有时工作,有时不工作。我的猜测是,因为这些是异步函数,变量是由.ready函数调用设置的,页面卸载后。但是,即使我让页面停留一段时间,然后卸载它,这种不一致仍然存在。我在卸载函数中做错了什么吗?

  • 尝试在post call中设置ajax:false

  • 尝试使用$(window).unload() jQuery结构,这只是不工作。

  • 使用Google Chrome

$。Post是异步的;这意味着当函数返回时,请求可能还没有发出。

尝试同步发出请求:

$.ajax('Example.php..', {
    async: false,
    type: 'POST'
});

参见jQuery.ajax文档