Jquery сохранить объект данных JSON в файле cookie
-
26-09-2019 - |
Вопрос
Как сохранить данные JSON в файле cookie?
Мои данные JSON выглядят так
$("#ArticlesHolder").data('15', {name:'testname', nr:'4',price:'400'});
$("#ArticlesHolder").data('25', {name:'name2', nr:'1', price:'100'});
$("#ArticlesHolder").data('37', {name:'name3', nr:'14', price:'60'});
И я хочу сделать что-то вроде
var dataStore = $.cookie("basket-data", $("#ArticlesHolder").data());
и чтобы получить данные, в которые я хочу загрузить их $("#ArticlesHolder")
нравиться
$.each($.cookie("basket-data"), function(i,e){
$("#ArticlesHolder").data(i, e);
});
кто-нибудь знает, на правильном ли я пути или это нужно сделать каким-то другим способом?Проще говоря, как мне поместить и извлечь данные JSON из файла cookie?
Решение
Вы можете сериализовать данные как JSON, как это:
$.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));
Затем, чтобы получить его из печенья:
$("#ArticlesHolder").data(JSON.parse($.cookie("basket-data")));
Это зависит от JSON.stringify()
а также JSON.parse()
Для сериализации / десериализации вашего объекта данных для более старых браузеров (IE <8) включают json2.js. чтобы получить JSON
Функциональность. Этот пример использует jquery plugin
Другие советы
Теперь уже нет необходимости использовать JSON.stringify
явно. Просто выполните эту строку кода
$.cookie.json = true;
После этого вы можете сохранить любой объект в cookie, который будет автоматически преобразован в JSON и обратно с JSON при чтении cookie.
var user = { name: "name", age: 25 }
$.cookie('user', user);
...
var currentUser = $.cookie('user');
alert('User name is ' + currentUser.name);
Но библиотека JSON не приходит с jquery.cookie, поэтому вы должны загрузить его самостоятельно и включить в HTML-страницу до jquery.cookie.js.
использовать JSON.stringify(userData)
чтобы скрыть объект JSON для строки.
var dataStore = $.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));
и чтобы вернуться из употребления печенья JSON.parse()
var data=JSON.parse($.cookie("basket-data"))
Не очень хорошая практика, чтобы сохранить значение, которое возвращается из JSON.stringify(userData)
к печению; Это может привести к ошибке в некоторых браузерах.
Прежде чем использовать его, вы должны преобразовать его в Base64. (с использованием btoa
), а при чтении это конвертировать из Base64. (с использованием atob
).
val = JSON.stringify(userData)
val = btoa(val)
write_cookie(val)
С сериализом данных как JSON и BASE64, зависимость jquery.cookie.js:
var putCookieObj = function(key, value) {
$.cookie(key, btoa(JSON.stringify(value)));
}
var getCookieObj = function (key) {
var cookie = $.cookie(key);
if (typeof cookie === "undefined") return null;
return JSON.parse(atob(cookie));
}
:)
Попробуй это:https://github.com/tantau-horia/jquery-SuperCookie
Быстрое использование:
создать - создать файл cookie
проверить - проверить наличие
проверить — проверить значение файла cookie, если JSON
check_index — проверить, существует ли индекс в JSON
read_values — прочитать значение cookie в виде строки
read_JSON — прочитать значение cookie как объект JSON.
read_value — прочитать значение индекса, хранящегося в объекте JSON.
replace_value — заменить значение из указанного индекса, хранящегося в объекте JSON.
Remove_value — удалить значение и индекс, хранящиеся в объекте JSON.
Просто используйте:
$.super_cookie().create("name_of_the_cookie",name_field_1:"value1",name_field_2:"value2"});
$.super_cookie().read_json("name_of_the_cookie");