JSON Cookie问题

时间:2011-01-18 16:23:11

标签: javascript json

我正在使用CookieJar来读取和写入一个对象数组。

在我的ClickButton函数中,我会读取现有的cookie并在我再次写入之前添加到对象数组中。

以下是要保存的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>

1 个答案:

答案 0 :(得分:3)

每次单击按钮时,您都会创建一个名为items的新数组,然后将名为tmpA的旧数组添加到其中。然后,你隐藏items,它现在里面有一个新的子数组(代表前一个值,它本身就是一个数组)。

而不是:

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

你应该:

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