Сохранение массива в куки в javascript - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь сохранить массив в файлах cookie:

setCookie("a", JSON.stringify([{a:1},{a:2}]))

Но, похоже, браузер сохраняет расшифрованную версию моей строки, и когда я пытаюсь получить ее:

JSON.parse(getCookie("a"))

Я получаю ошибку разбора. Как решить эту проблему?

Ответы [ 3 ]

1 голос
/ 15 октября 2019

Вот как создать / получить cookie со значением массива в javascript

JSON-кодировать его, эффективно создавая строку типа "{name: 'myname', age: 'myage'}" который вы помещаете в cookie, извлекаете при необходимости и декодируете обратно в массив / объект JavaScript.

Пример - сохраняете массив в cookie:

var arr = ['foo', 'bar', 'baz'];
var json_str = JSON.stringify(arr);
createCookie('mycookie', json_str);

Позже, чтобыполучить содержимое cookie в виде массива:

var json_str = getCookie('mycookie');
var arr = JSON.parse(json_str);

Примечание: функции cookie не являются собственными, взяты из Как создать и прочитать значение из cookie? см. ниже:

    var createCookie = function(name, value, days) {
    var expires;
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        expires = "; expires=" + date.toGMTString();
    }
    else {
        expires = "";
    }
    document.cookie = name + "=" + value + expires + "; path=/";
}

function getCookie(c_name) {
    if (document.cookie.length > 0) {
        c_start = document.cookie.indexOf(c_name + "=");
        if (c_start != -1) {
            c_start = c_start + c_name.length + 1;
            c_end = document.cookie.indexOf(";", c_start);
            if (c_end == -1) {
                c_end = document.cookie.length;
            }
            return unescape(document.cookie.substring(c_start, c_end));
        }
    }
    return "";
}
0 голосов
/ 15 октября 2019

попытайтесь сериализовать данные JSON в одну строку и сохранить их в файле cookie, а затем прочитать обратно, десериализовать строку и преобразовать обратно в строку JSON или объект JSON

0 голосов
/ 15 октября 2019

Попробуйте использовать createCookie и getCookie. Это дает вам ошибку синтаксического анализатора, потому что getCookie ("a") возвращает undefined.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...