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

时间:2011-09-03 23:37:01

标签: javascript php ajax

我想在页面加载和卸载时调用一个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是传递给页面的变量。 Example.php是一个使用ajax调用的脚本,它只是将变量$ id添加到存储为$ _SESSION变量的数组(如果dir = 1),如果dir = 0则从数组中删除变量。

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

  • 尝试在后调用中设置ajax:false

  • 尝试使用$(window).unload() jQuery构造,但这种构造无效。

  • 使用谷歌浏览器

1 个答案:

答案 0 :(得分:1)

$ .post是异步的;这意味着当函数返回时,可能仍未发出请求。

尝试同步发出请求:

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

请参阅jQuery.ajax文档。