3

我正在使用setcookie()from在 CakePHP 中创建一个 cookie /cake/contoller_name/method/parameter this page。但我无法从 JavaScript 读取这个 cookie。但是,当上述 cookie 设置为 时/cake/contoller_name/method this page,我可以从 JavaScript 读取此 cookie。

所以我意识到我们不能从带有参数的页面设置和更改 cookie。在服务器端,我们可以在 Cake 中读取这些 cookie,但不能从 JavaScript 中读取。注意:参数以“蛋糕样式”传递,而不是常规查询字符串;例如:/cake/controller/param1/param2。示例代码

案例一: 网址:/cake/payroll/salary 页面:payroll_controller.php

function salary(){ 
    setcookie('TEST_COOKIE','TEST_DATA',0); 
}

案例2: URL:/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?

4

2 回答 2

3

您必须遵循 3 个步骤:

  1. 使用 CakePHP Cookie 组件。让框架完成艰巨的任务:http ://book.cakephp.org/2.0/en/core-libraries/components/cookie.html

  2. 阅读这篇关于 JavaScript 和 cookie 的文章。您还可以在这里找到 3 个用于删除/创建/读取 cookie 的函数:http ://www.quirksmode.org/js/cookies.html

  3. 如果您使用 Firefox,请安装 Firebug 并使用 FireCookie 扩展: http: //www.softwareishard.com/blog/firecookie/

最新的 Firebug 已经安装了 FireCookie。

在 FireCookie 中,您可以检查 cookie 是否真的存在并查看它们的名称和值。

于 2012-09-17T12:04:03.250 回答
1

试试这个代码来设置cookie

setcookie('TEST_COOKIE','your data',0,"/"); 
于 2012-09-18T08:58:53.667 回答