我有一个第一次加载的页面,通过 AJAX 定期(每隔几秒)更新。在 AJAX 处理页面上,我想更新用户的 cookie 以反映“上次访问时间”(从而将数据标记为已读/未读)。设置标题后是否仍然使用“setCookie”?还是我必须通过 JS 更新 cookie?
谢谢!
您需要在设置 cookie 之前阻止任何输出。基本上,您可以重新编写 php 命令或尝试使用ob_start来阻止输出,这样您就可以在输出任何 html 之前设置 cookie。
一种方法是使用 AJAX 调用 php 脚本。您可以制作 php 脚本来设置 cookie。我是这样做的:
HTML:
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
</head>
<body>
<script>
function changeCookie(id)
{
data = 'id='+id;
$.ajax({
type: "POST",
url: 'test.php',
data: data,
dataType: 'html'
});
}
</script>
</body>
PHP:
<?php
$id = $_POST['id'];
setcookie("TestCookie", $id, time()+3600); /* expire in 1 hour */
?>
每当您调用 changeCookie 函数时,它都会将您的 cookie 设置为您在函数参数中提供的值。您可以修改此脚本以将名称和到期日期发送到 PHP 脚本。
另一种方法可能是没有 PHP,只需计划 javascript。您可以在此处找到更多相关信息。