这是最低限度的例子 -
的index.php
<?php
$count = file_get_contents("count.txt") + 0;
file_put_contents("$count.txt [loaded]", '');
file_put_contents("count.txt", $count + 1);
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<script src="jquery-1.10.2.min.js"></script>
</head>
<body>
<main>
<p> hi there </p>
</main>
<script type="text/javascript">
var id = "<?php echo $count; ?>";
</script>
<script src="script.js"></script>
</body>
</html>
的script.js
$(document).ready(function ()
{
$(window).bind('beforeunload', function () {
$.post("unloader.php", { id : id });
});
});
unloader.php
<?php
file_put_contents("$_POST[id] [unloaded]", '');
当我打开网页时,会创建一个文件,其中包含计数编号作为其名称。 当我关闭选项卡时,jquery请求unloader.php,它只是一个独立的脚本,它创建一个文件,其中包含计数编号作为名称。
有时它有效,有时它不起作用。 我的意思是始终创建开始文件。但有时候不会在关闭时创建必须创建的文件。 知道发生问题的地方吗?
答案 0 :(得分:2)
卸载页面时,您无法(可靠地)进行AJAX调用。因为它正在卸载,所以任何仍在进行中的操作都将被删除。
如果浏览器在AJAX调用时足够快(或者服务器响应新页面加载的速度足够慢),那么你应该看到一个结果,但它完全不可靠。