2011-02-17 70 views
0

我的代碼使用javascript(使用jQuery的cookie插件)設置cookie,然後對需要讀取該cookie的php腳本進行ajax調用。看起來,jQuery cookie插件有一個bug,因爲PHP腳本無法讀取這個cookie。此外,當我查看Chrome的資源面板時,我沒有看到相關域下的cookie。另外,如果我使用Javascript的標準document.cookie方法設置cookie,Cookie將出現在參考資料面板中,我的PHP腳本能夠讀取它。我想使用jQuery插件的主要原因是因爲我設置的cookie值有換行符,並且jQuery cookie插件似乎很好地處理了這個問題。這是一個將存儲在MySQL數據庫中的值,輸出時這些換行符會自動轉換爲(br)和(p)標籤。所以jQuery cookie插件似乎給了我想要的價值......但不是在一個真正的cookie!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; 

的 '迴響' 上述聲明不迴應任何事情,甚至不是一個空字符串。如果我嘗試使用cookie的var_dump,我會得到NULL。但是,我可以在控制檯中輸入$ .cookie('flavor')並確定它已經設置好了。但正如我之前所說,它沒有出現在Chrome的開發工具的資源面板中,所以我不相信它實際上是一個真正的cookie ......並且我的PHP腳本似乎也同意這個疑問:)

回答

1

在您發佈的代碼中,您在客戶端設置了一個名爲'flavor'的cookie,並嘗試在服務器上讀取一個名爲'comment'的cookie。對我來說,你沒有得到任何東西是有道理的。

也許這只是您發佈問題時的錯誤。

當你指向

'http://' + window.location.host + '/readCookie.php' 

即使在剛剛

'/readCookie.php' 

餅乾的AJAX請求或特定領域會發生什麼。

+0

是的,這是一個錯誤。我已經相應地更新了這篇文章。當我將域名更改爲window.location.host時,會發生同樣的情況。它實際上似乎是jQuery cookie插件的問題。我已經更新了我的帖子,並提供了相關信息。 – maxedison 2011-02-17 23:26:56

0

我懷疑cookie值中的換行符可能會導致問題。

爲什麼base64不能編碼cookie值?