我正在使用 /cake/contoller_name/method/parameter this page
中的 setcookie()
在 CakePHP 中创建一个 cookie。但是我无法从 JavaScript 读取这个 cookie。但是,当上述 cookie 从 /cake/contoller_name/method this page
设置时,我可以从 JavaScript 读取这个 cookie。
所以我意识到我们不能使用参数从页面设置和更改 cookie。在 Cake 中的服务器端,我们可以读取这些 cookie,但不能从 JavaScript 读取。注意:参数以“蛋糕式”方式传递,而不是通过常规查询字符串传递;例如:/cake/controller/param1/param2
。
示例代码
案例 1: 网址:/cake/payroll/salary 页面:payroll_controller.php
function salary(){
setcookie('TEST_COOKIE','TEST_DATA',0);
}
案例 2: 网址:/cake/payroll/salary/14 页面:payroll_controller.php
function salary(){
setcookie('TEST_COOKIE','TEST_DATA',0);
}
Javascript 代码:
function getCookie(c_name) {
var i, x, y, ARRcookies = document.cookie.split(";");
for (i = 0; i < ARRcookies.length; i++) {
x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
x = x.replace(/^\s+|\s+$/g, "");
if (x == c_name) {
return unescape(y);
}
}
}
alert(getCookie('TEST_COOKIE'));
我可以使用 JS 读取案例 1 中的 cookie,但不能读取案例 2 中的 cookie。如何在 CakePHP 的任何页面上设置 cookie 并从 JavaScript 读取这些 cookie?
最佳答案
您必须遵循 3 个步骤:
使用 CakePHP Cookie 组件。让框架完成艰巨的任务:http://book.cakephp.org/2.0/en/core-libraries/components/cookie.html
阅读这篇关于 JavaScript 和 cookie 的文章。您还可以在这里找到 3 个用于删除/创建/读取 cookie 的函数:http://www.quirksmode.org/js/cookies.html
如果您使用 Firefox,请安装 Firebug 并使用 FireCookie 扩展:http://www.softwareishard.com/blog/firecookie/
最新的 Firebug 已经安装了 FireCookie。
在 FireCookie 中,您可以检查 cookie 是否真的存在并查看它们的名称和值。
关于javascript - CakePHP Cookie 无法从 JavaScript 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12455518/