我想有一个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
文档