0

我有一个页面,其中有 4 个默认选中的复选框。如果您取消选中某个框,它会写入一个 cookie,以便返回该页面的行程将保存首选项。我遇到的问题是cookie似乎无论如何都是写的。第一次访问该页面应该不会创建 cookie,但取消选中一个框应该会抛出以下代码。就目前而言,当我第一次访问我的网站时,cookies 就被创建了。

我哪里出错了(如果它在多个地方,我不会感到惊讶)。

$('#mycheckbox').change(function() {
if (! this.checked) {
<?php setcookie('key', 'Value', time() + 4800); ?>
}
});
4

2 回答 2

4

不,this.checked工作。

问题是 PHP 代码将始终运行,因为它在服务器端运行,而不是由浏览器解释。所有 PHP 代码都在浏览器获取文件之前执行。

一个解决方案是将 PHP 放在一个外部文件中并使用 jQuery$.ajax来请求该文件,该文件将仅在需要时运行代码。

您还可以查看 jQuery$.cookie插件。

于 2012-08-05T03:36:02.963 回答
0

正如@MarkB 已经说过的那样,您正在混淆 javascript 和 php。在这种情况下,您应该使用 javascript 而不是 php 设置您的 cookie。请参阅此帖子以了解更多信息。

正如您已经注意到的那样,您现在拥有的代码将始终设置 cookie,因为服务器忽略了 javascript 代码,只运行 php 代码来设置 cookie。

于 2012-08-05T03:40:08.150 回答