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. サンプルコード

ケース 1: URL: /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'));

ケース 1 の Cookie は JS で読み取ることができますが、ケース 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 に関するこの記事をお読みください。また、Cookie の削除/作成/読み取りに使用する必要がある 3 つの関数もここにあります: 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 に答える