我有一个页面,默认情况下会检查4个复选框。如果取消选中一个框,它会写一个cookie,以便返回页面的行程将保存首选项。我遇到的问题是无论如何都会写出cookie。第一次访问该页面不应创建cookie,但取消选中一个框应该抛出以下代码。就目前而言,我第一次访问我的网站时,会创建cookie。
我哪里出错了(如果它在多个地方,我不会感到惊讶)。
$('#mycheckbox').change(function() {
if (! this.checked) {
<?php setcookie('key', 'Value', time() + 4800); ?>
}
});
答案 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。