JSON Cookie проблема - PullRequest
       2

JSON Cookie проблема

0 голосов
/ 18 января 2011

Я использую CookieJar для чтения и записи массива объектов в файл cookie.

В своей функции 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 Ответ

3 голосов
/ 18 января 2011

Каждый раз, когда нажимается ваша кнопка, вы создаете новый массив с именем items, а затем добавляете к нему старый массив с именем tmpA. Затем вы прячете items, у которого теперь есть новый дочерний массив (представляющий предыдущее значение, которое само было массивом).

Вместо:

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

Вы должны иметь:

    if (tmpA != null)
        items = items.concat(tmpA); // this will merge the two arrays
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...