2012-11-15 46 views
0

我設置cookie在這樣的Rails,爲什麼jQuery.cookie回報「的翻譯:」爲一個字符串值

cookies[:account] = { :value => @account.to_s, :expires => 3.month.from_now } 

這似乎是做工精細,簡單debug @account顯示

--- myvalue 
… 

但是,當使用jQuery.Cookie調用cookie時,它將返回一個"[object Object]"

> $.cookie('account'); 
"[object Object]" 

任何想法爲什麼會發生這種情況,以及如何解決它?

+0

您是否更改jQuery Cookie的任何參數? –

+0

號沒有改變任何東西。 – Martin

回答

1

[object Object]是從Object.toString()返回的值,所以這意味着$ .cookie('account')返回一個非Number,非String對象。

在開始找出返回值中的內容(以幫助您確定返回對象中的內容)的方法是循環查找屬性。

所以,像這樣:

var obj = $.cookie('account'); 
var msg = []; 
for(var i in obj) msg.push(i +" = " + obj[i]); 
alert(msg.join("\n")); // or console.log(msg.join("\n")); 
+1

解決。我意外地覆蓋了cookie。 – Martin

2

爲了其他任何人,運行到這一點,檢查,以確保你沒有同名的多個Cookie(有不同的路徑或過期)。這可能導致$ .cookie()返回[object Object]

1

您可以使用Mozilla Library。 您可以設置和獲取餅乾這樣

docCookies.setItem(name, value); 
docCookies.getItem(name); 
2

我知道我非常晚的答案在這裏,但只是想我要發表我對這個解決方案了。我爭奪與jQuery的餅乾回來的翻譯:這個問題時,發現了一些可能的情況下,將導致此: -

  • 同一cookie名稱,但在不同的路徑
  • 我發現傳遞參數路徑/過期時,插件有時會像處理值一樣對待它,它試圖設置一個類似JSON的對象,路徑和過期值作爲值。
  • 加載腳本兩次,加載運行的Cookie集代碼
  • AJAX加載的內容刷新腳本可能導致發生此問題。

最後,我決定使用localStorage選項,因爲我存儲的數據非常小,不值得浪費時間試圖讓jQuery cookie工作。

我希望這可以幫助其他人,並將他們從挫折時間中拯救出來!

0

Cookie的最大尺寸僅爲4kb。這可能是其中一個原因。

至於我的情況。它當然超過4kb只看數據。

我的替代方案是使用localStorage。

相關問題