хранение и извлечение объектов json в / из cookie - PullRequest
6 голосов
/ 31 марта 2011

Я пытаюсь сохранить объекты json в cookie, но столкнулся с несколькими проблемами.Я могу создать свой объект следующим образом:

product = {
   "name" : "prodname",
   "quantity" : 4
}

Затем я сохраню этот объект в своем cookie.По мере добавления новых продуктов (это корзина для покупок) я добавляю дополнительные строки, добавляя новые объекты в конец строки cookie (таким образом, у меня, по существу, есть много небольших отдельных объектов).У меня проблемы с получением объектов обратно из строки cookie, хотя.И $.parseJSON, и eval терпят неудачу, когда я пытаюсь прочитать объекты обратно из cookie.Любая помощь будет оценена.

Ответы [ 2 ]

9 голосов
/ 31 марта 2011

Вероятно, оно должно выглядеть следующим образом:

{"products": [
    {
       "name" : "prodname",
       "quantity" : 4
    },
    {
       "name" : "prodname2",
       "quantity" : 3
    }
]}

[] означает массив.Если вы хотите добавить другой продукт, вы загружаете его из файла cookie, обновляете массив и сохраняете его снова.Если вы хотите, вы можете пропустить внешний объект и сделать куки просто массивом.

РЕДАКТИРОВАТЬ: Скажите cookieStr это ваш куки.

var root = $.parseJSON(cookieStr);
root.products.push(newProduct);
cookieStr = JSON.stringify(root);
6 голосов
/ 03 июня 2015

не рекомендуется сохранять значение, возвращенное из файла JSON.stringify (cookieStr), в файл cookie. это может привести к ошибке в некоторых браузерах.

перед его использованием вы должны преобразовать его в base64 (используя btoa), а при чтении конвертировать из base64 (используя atob)

val = JSON.stringify(cookieStr)
val = btoa(val)

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