我的代码用javascript设置一个cookie(使用jQuery的cookie插件),然后对需要读取该cookie的php脚本进行ajax调用。似乎jQuery cookie插件有一个错误,因为PHP脚本无法读取此cookie。此外,当我查看Chrome的“资源”面板时,我看不到相关域下的cookie。另外,如果我使用Javascript的标准document.cookie方法设置cookie,那么cookie将出现在Resources面板中,我的PHP脚本能够读取它。我想使用jQuery插件的主要原因是因为我设置的cookie值有换行符,而jQuery cookie插件似乎优雅地处理它。它是一个将存储在MySQL数据库中的值,这些换行符将在输出时自动转换为(br)和(p)标记。所以jQuery cookie插件似乎给了我想要的价值......但不是真正的cookie!
无论如何,这是我正在使用的代码。请随意告诉我如何在不使用jQuery cookie插件的情况下维护我需要的换行符,而不是试图弄清楚插件/我的插件实现出了什么问题。
使用Javascript:
$.cookie('flavor','chocolate',{expires:7});
$.get('http://example.com/readCookie.php',function(data){
console.log(data);
});
readCookie.php
$myCookie = $_COOKIE['flavor'];
echo $myCookie;
上面的'echo'语句根本不回显任何内容,甚至不是空字符串。如果我尝试使用cookie的var_dump,我得到NULL。但是,我可以将$ .cookie('flavor')输入控制台,看看它实际上是设置好的。但正如我之前所说,它没有出现在Chrome的开发人员工具的资源面板中,所以我不相信它实际上是一个真正的cookie ......我的PHP脚本似乎也同意这个疑问:)
答案 0 :(得分:1)
在您发布的代码中,您在客户端设置了名为“flavor”的cookie,并尝试在服务器上读取名为“comment”的cookie。让我觉得你没有得到任何东西。
也许这只是你发布问题时的错误。
那么当您在
指向AJAX请求时会发生什么'http://' + window.location.host + '/readCookie.php'
甚至只是
'/readCookie.php'
Cookie是针对特定领域的。
答案 1 :(得分:0)
我怀疑cookie值中的换行符可能会导致问题。
为什么base64不对cookie值进行编码?