this.checked创造误报?

时间:2012-08-05 03:30:45

标签: php javascript jquery

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

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

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

2 个答案:

答案 0 :(得分:4)

不,this.checked有效。

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

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

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

答案 1 :(得分:0)

正如@MarkB已经说过你正在混淆javascript和php。在这种情况下,你应该用javascript而不是php设置你的cookie。请参阅this post了解详情。

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