所以我在这里设置cookie。他们完全正常工作,因为当我进入我的firefox隐私事物时,我可以看到那里的cookie及其价值,但是当我试图阅读它或回应它时,它总是给我一个空白的结果... < / p>
我正在使用Wordpress,只需点击一下按钮就可以通过ajax请求调用setcookie。我在这里如何做到这一点:
此脚本位于templateDirectory / js
中$('.bucket-list').on("click", function () {
$.ajax({
url: templateDir + '/js/list.php'
});
在php文件list.php中,我们有:
setcookie("displaymode", "list" , time() + 3600 * 24 * 30);
到目前为止,我说我可以在浏览器中看到cookie,但是当我尝试调用它时,它只是继续给我空白结果,如下所示:
if ($_COOKIE["displaymode"] == "list")
echo '<div class="class1">' ;
else {
echo '<div class="class2">' ;
echo '<script>';
echo 'alert('.$_COOKIE["displaymode"].')';
echo '</script>';
}
?>
这个脚本位于templateDirectory的主文件(homepage.php)中。任何帮助都会非常感激。
答案 0 :(得分:2)
确保在预期的路径上设置了cookie。
如果您的脚本位于:
/templates/MyTemplate/js/list.php
将为路径/templates/MyTemplate/js/
设置Cookie。
要为整个域设置Cookie,请使用:
setcookie("displaymode", "list", time() + 3600 * 24 * 30, "/");
set path to "/" --^
答案 1 :(得分:1)
请记住,无法在同一页面上设置和调用Cookie。您必须在两者之间加载页面。这就是人们倾向于倾向于会话的原因,这些会话可以在同一页面上设置和调用(会话数据不存储在cookie中)
答案 2 :(得分:0)
来自PHP documentation,常见的陷阱:
在下次加载可以看到Cookie的网页之前,Cookie才会显示。要测试cookie是否已成功设置,请在cookie过期前检查下一个加载页面上的cookie。