Подтвердить что ты не робот

Как сохранить массив объектов в файле cookie с помощью jQuery $.cookie()?

У меня есть список объектов javascript:

var people = [
   { 'name' : 'Abel', 'age' : 1 },
   { 'name' : 'Bella', 'age' : 2 },
   { 'name' : 'Chad', 'age' : 3 },
]

Я попытался сохранить их в cookie браузера с помощью jQuery $.cookie():

$.cookie("people", people);

Затем я извлекаю этот файл cookie, а затем пытаюсь вставить в него еще один объект:

var people = $.cookie("people");
people.push(
    { 'name' : 'Daniel', 'age' : 4 }
);

Однако это не работает; Я проанализировал этот код в Firebug, а Console отметил, что people - строка ("[object Object],[object Object],[object Object]") и что функция push не существует.

Что происходит? Каков правильный способ хранения и извлечения списка объектов?

4b9b3361

Ответ 1

Cookies могут хранить только строки. Поэтому вам необходимо преобразовать массив объектов в строку JSON. Если у вас есть библиотека JSON, вы можете просто использовать JSON.stringify(people) и сохранить это в файле cookie, а затем использовать $.parseJSON(people), чтобы отменить его.

В конце концов, ваш код будет выглядеть так:

var people = [
   { 'name' : 'Abel', 'age' : 1 },
   { 'name' : 'Bella', 'age' : 2 },
   { 'name' : 'Chad', 'age' : 3 },
];
$.cookie("people", JSON.stringify(people));
// later on...
var people = $.parseJSON($.cookie("people"));
people.push(
    { 'name' : 'Daniel', 'age' : 4 }
);
$.cookie("people", JSON.stringify(people));

Ответ 2

Я попытался это сделать сегодня и не смог заставить его работать. Позже я узнал, что это потому, что у меня было 3 очень больших объекта, которые я пытался сохранить в cookie.

То, как я работал, это хранение данных в локальном хранилище браузеров.

Пример:

localStorage.setItem("test2", JSON.stringify(obj) )

localStorage.getItem("test2")

Дополнительная информация о локальном хранилище: файлы cookie и локальное хранилище

4 часа моего времени на это, не делайте ту же ошибку.