2017-07-25 8 views
0

jqueryクッキーに配列を保存/ロードする方法を探していて、この質問の先頭の答えを使用しましたhow to store an array in jquery cookie? クッキーリストには、配列の長さを調べるときに正しい番号を取得したい。しかし、私はページをリフレッシュしてクッキーリストをロードするとすぐに、配列内に最大23のアイテムしか得られず、その理由を見つけることができません。ブラウザの標準的なクッキーのサイズはあなたが一方または両方でこの制限をトリガする可能性があります4096ですjqueryクッキーから23個以上の項目をロードできません

は、ここに私のコード

//This is not production quality, its just demo code. 
    var cookieList = function(cookieName) { 
    //When the cookie is saved the items will be a comma seperated string 
    //So we will split the cookie by comma to get the original array 
    var cookie = $.cookie(cookieName); 
    //Load the items or a new array if null. 
    var items = cookie ? cookie.split(/,/) : new Array(); 

    //Return a object that we can use to access the array. 
    //while hiding direct access to the declared items array 
    //this is called closures see http://www.jibbering.com/faq/faq_notes/closures.html 
    return { 
     "add": function(val) { 
      //Add to the items. 
      items.push(val); 
      //Save the items to a cookie. 
      //EDIT: Modified from linked answer by Nick see 
      //  http://stackoverflow.com/questions/3387251/how-to-store-array-in-jquery-cookie 
      $.cookie(cookieName, items.join(',')); 
     }, 
     "remove": function (val) { 
      //EDIT: Thx to Assef and luke for remove. 
      indx = items.indexOf(val); 
      if(indx!=-1) items.splice(indx, 1); 
      $.cookie(cookieName, items.join(','));  }, 
     "clear": function() { 
      items = []; 
      //clear the cookie. 
      //$.cookie(cookieName, ''); 
      $.removeCookie(cookieName); 
     }, 
     "items": function() { 
      //Get all the items. 
      return items; 
     } 
    } 
} 

var packCollectorCookieList = new cookieList("xWeaselPackCollector"); // all items in the array. 
var compareListCollector = packCollectorCookieList.items(); 

alert(compareListCollector.length); 

だと私は

packCollectorCookieList.add($(this).parent('li').data('link')); 
+0

アイテムの長さはどのくらいですか?最初の失敗の長さに対して、*保存できる最長のクッキー文字列の長さはどれくらいですか?あなたは単に[cookie size limits](http://stackoverflow.com/q/5381526)に走っているかもしれません。 –

+0

私は正確にはわかりませんが、短い文字列でテストして、クッキーにもっと多くのアイテムを格納することができたので、実際にはサイズ制限の問題のようです。その限界にすぐに到達するとは期待していませんでした。ありがとう! –

答えて

0

ように(リンクされている)項目を追加しますof:

1クッキー内のデータのサイズ制限
複数のクッキーが最大4096個まで追加されました。

HTML5とJqueryはどちらもこの問題を回避するためにローカルストレージをサポートしています。

Overcoming Cookie Size Limit

+0

ありがとう!ローカルストレージを使用している問題を修正しました。 –

+0

これを受け入れられた答えとしてマークしてください。ありがとう。 –

関連する問題