2011-01-18 12 views
0

私はCookieJarを使用して、オブジェクトの配列をクッキーに読み書きしています。JSON Cookieの問題

私のClickButton関数では、既存のクッキーを読み込んでオブジェクトの配列に追加してから、もう一度上書きします。ここで

が保存されているJSON文字列です:

[{"id":"3","value":"33333","text":"Bbbbb"}, 
[{"id":"3","value":"33333","text":"Bbbbb"}, 
    [{"id":"5","value":"55555","text":"xxxxxx"}]]] 

私はそれが本当になりたい:

[{"id":"3","value":"33333","text":"Bbbbb"}, 
{"id":"3","value":"33333","text":"Bbbbb"}, 
{"id":"5","value":"55555","text":"xxxxxx"}] 

私はここで間違ってやっている任意のアイデア?私は今、一日以上のためにこれで苦労:)

コード:

<script type="text/javascript"> 
    function Display() { 
     jar = new CookieJar({ 
      expires: 3600, // seconds 
      path: '/' 
     }); 

     var itemArray = jar.get("Items"); 
     if (itemArray) { 
      tmpDiv.innerHTML += itemArray.toJSONString() + '<br/>'; 

      for (var i = 0; i < itemArray.length; i++) { 
       tmpDiv.innerHTML += itemArray[i].item[0].value + '<br/>'; 
      } 
     } 
    } 

    function ClickButton(id, value, text) { 
     jar = new CookieJar({ 
      expires: 3600, // seconds 
      path: '/' 
     }); 

     var tmpA = jar.get("Items"); 
     var items = new Array; 

     items.push({ "id": id, "value": value, "text": text }); 

     // If any existing values in the cookie, load and add to Array 
     if (tmpA != null) 
      items.push(tmpA); 

     tmpDiv.innerHTML += items.toJSONString() + "<br/>"; 
     jar.put("Items", items); 
    } 
</script> 

答えて

3

あなたのボタンがクリックされるたびに、あなたは新しい配列がitems呼ば作成している、そして古い配列を追加すると、それにtmpAと呼ばれます。次に、itemsを隠しています。これには、その中に新しい子配列があります(以前の値を表し、それ自体は配列でした)。

の代わりに:

if (tmpA != null) 
     items.push(tmpA); 

あなたは持っている必要があります。

if (tmpA != null) 
     items = items.concat(tmpA); // this will merge the two arrays 
+0

私はそれを愛します!完璧に動作します。私はそれが配列にアイテムを追加する方法だと思ったので、プッシュ関数を完全に誤解しています。 – StefanE

+0

これは文字通り、配列にアイテムを追加する方法です。もしそれらのアイテムが配列そのものであれば、ネストされた配列で終わるでしょう:) –