2011-10-16 62 views
1

好的, 所以我使用jquery創建了一個cookie並在其中存儲了一個div。 這個div有很多格式化,其他divs,文本等等。使用jQuery存儲和檢索cookie中的div

var rentContainer = document.createElement('div'); 
rentContainer.setAttribute("class","module"); 
var carContainer = document.createElement('div'); 
carContainer.setAttribute("class","carRentContainer"); 
rentContainer.appendChild(carContainer); 
.... and a lot of other things go in this rentContainer div 

現在保存在cookie的

$.cookie('rented_car', rentContainer); 

萬物看起來不錯高達現在。

當頁面刷新和正文加載時,現在是時候得到這個div並在頁面上顯示它(具有相同的格式,結構等)。

所以在我的功能我有

var rented_car_cookie = $.cookie("rented_car"); 
if(rented_car_cookie){ 
    document.getElementById('rentit').appendChild(rented_car_cookie); 
    //rentit is already defined and exists on the page. All I need is to add the cookie div content on it. 

,但是這給了我一個錯誤信息

Firebug的日誌已經達到極限。 0個條目未顯示。首選項
未捕獲異常:[Exception ...「無法轉換JavaScript參數arg 0 [nsIDOMHTMLDivElement.appendChild]」nsresult:「0x80570009(NS_ERROR_XPC_BAD_CONVERT_JS)」location:「JS frame :: iGo.js :: checkCookies :: line 10 「data:no]

請幫忙。做這個的最好方式是什麼?

回答

4

無論如何,在cookie中存儲完整的html元素是件壞事。也許最好使用JSON。

無論如何,你可以嘗試在cookie中保存div作爲html字符串。

// set 
$.cookie("rented_car", $(rentContainer).html()) 

// get 
var content = $.cookie("rented_car"); 
var $rentContainer = $('<div class="module">' + content + '</div>'); 

代碼:http://jsfiddle.net/yecf8/

但是你要知道,有很多的瞭解有關的cookie不同的瀏覽器不同的限制。例如:

的Microsoft Internet Explorer以下RFC符合2109建議的最低限制:

  • 至少300餅乾每個Cookie
  • 至少4096字節(如由字符的大小測量在Set-Cookie標頭的語法描述中包括cookie非終端)
  • 每個唯一的主機或域名至少有20個餅乾
+0

感謝您的幫助 – kk1957