2012-09-17 34 views
3

我在CakePHP中使用setcookie()/cake/contoller_name/method/parameter this page創建cookie。但是我無法從JavaScript讀取這個cookie。但是,當上面的cookie從/cake/contoller_name/method this page設置時,我可以從JavaScript讀取此cookie。CakePHP Cookie無法從JavaScript讀取

所以我意識到我們不能使用參數設置和更改頁面中的cookie。在Cake的服務器端,我們可以讀取這些cookie,但不能使用JavaScript。注意:參數是以「蛋糕風格」傳遞的,而不是常規查詢字符串;例如:/cake/controller/param1/param2。 示例代碼

情況1: URL:/蛋糕/工資/薪金頁:payroll_controller.php

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

情況2: URL:/蛋糕/工資/工資/ 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')); 

我可以從案例2.閱讀案例1與JS的餅乾,而不是餅乾我如何設置cookies從CakePHP的任何頁面上閱讀從JavaScript這些cookie?

+0

爲什麼,如果你使用的是「的setcookie」功能,你使用CakePHP? –

+0

閱讀此:http://book.cakephp.org/2.0/en/core-libraries/components/cookie.html –

回答

1

試試這個代碼來設置cookie的

setcookie('TEST_COOKIE','your data',0,"/"); 
3

有3個步驟,你必須遵循:

  1. 使用CakePHP的Cookie的組件。讓框架完成艱鉅的任務:http://book.cakephp.org/2.0/en/core-libraries/components/cookie.html

  2. 閱讀關於JavaScript和cookies的文章。您還可以在這裏找到3個功能,你應該刪除/創建/讀取Cookie的使用:http://www.quirksmode.org/js/cookies.html

  3. 如果你使用Firefox,安裝螢火蟲並使用FireCookie擴展:http://www.softwareishard.com/blog/firecookie/

最新螢火蟲已經有FireCookie已安裝。

在FireCookie中,您可以檢查cookie是否真的存在並查看它們的名稱和值。