2012-11-08 78 views
1

我深化發展與jQuery的一個客戶端Web應用程序集對象到餅乾

我想存儲所有訪問過的網頁,我使用的cookie它

所以,我必須存儲兩個元素:

  • 頁面URL
  • 頁面標題

我開始數據的創建中的cookie爲:

的Index.html:

if(!$.cookie("history")){ 
     var url_history = document.location; 
     var title_history = $("html title").text(); 
     $.cookie("historyURL", url_history); 
     $.cookie("historyTITLE", title_history); 
    } 

anotherPage.html:

var url_history = document.location; 
var title_history = $("html title").text(); 
$.cookie("historyURL", url_history); 
$.cookie("historyTITLE", title_history); 

問題是,cookie的新值覆蓋舊的。

我想我應該設置一個對象,而不是字符串,如:

var objHistory = []; 
objHistory.push({url:document.location, title: $("html title").text()}) 
$.cookie("history", objHistory); 

現在我有一個問題:

我無法從餅乾

找回我的對象​​。當我試圖從cookie中獲取我的對象,它顯示一個字符串「對象」不是對象

是否可以在Cookie中設置對象?

感謝您的幫助

+0

Cookie值是* always *字符串。 –

+0

請添加評論,除了你的downvotes。我不在乎代表,我關心協作和知識共享。所以,請解釋和評論。 –

回答

2

Cookie(限制4K尺寸)是我試圖存儲訪問過的頁面數組的最後一個地方。由於其侷限性,cookie將是我嘗試使用的最後一種存儲方法。如果你在HTML5中,爲什麼你不使用localStorage來達到這個目的?

教程:http://www.w3schools.com/html/html5_webstorage.asp

的的localStorage只處理字符串鍵/值對。一種解決方法可以將其存儲之前字符串化你的對象,後來解析它,當你檢索:

var testObject = { 'URL': 1, 'TITLE': 2 }; 
localStorage.setItem('testObject', JSON.stringify(testObject)); 
var retrievedObject = localStorage.getItem('testObject'); 
console.log('retrievedObject: ', JSON.parse(retrievedObject)); 
+0

是否可以在localStorage中設置對象? – Valeriane

+0

@Valeri:它在說明中說了什麼(http:// www .w3.org/TR/webstorage /)? –

+0

我已經編輯了上面的答案,以顯示如何使用localStorage。請將upvote/mark標記爲答案以幫助未來的用戶。 – sainiuc

2

您可以隨時字符串化的對象轉換爲JSON:

var jsonHistory = JSON.stringify(objHistory); 
$.cookie("history", jsonHistory); 

編輯

簡單的演示(在Chrome和Firefox測試):

 (function(){ 
      var o = JSON.parse('{"id":1,"value":"code.google.com"}'); 
      var e = 'Thu Nov 10 2012 15:44:38'; 
      document.cookie = 'myObj='+ JSON.stringify(o) +';expires=' + e; 
     })() 
+0

強烈建議不要用大寫字母開頭變量名。這非常適合構造函數。 –

+0

Whene我回報我的index.html測試: '變種objHistory = $ .cookie( 「歷史」)' '爲(VAR我在objHistory){'' 的console.log( '這個URL:' + objHistory [i]);' '}' 它顯示'對象':( – Valeriane

-1

只能存儲字符串。一種非常有限的字符串類型。您需要使用一些分隔符來存儲這些值。看Allowed characters in cookies你可以使用哪些。

2

我會建議不要使用Cookie來存儲您所使用的數據類型,如餅乾基本上意味着存儲像一些關鍵的,ID數據量非常小......

您可以使用本地存儲而是因爲本地存儲限制是5 MB,也是可擴展的。同時本地存儲比Cookie更安全,因爲數據不會發送到服務器。