我想在页面加载和卸载时调用一个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构造,但这种构造无效。
使用谷歌浏览器
答案 0 :(得分:1)
$ .post是异步的;这意味着当函数返回时,可能仍未发出请求。
尝试同步发出请求:
$.ajax('Example.php..', {
async: false,
type: 'POST'
});
请参阅jQuery.ajax
文档。