jQuery сохранить объект данных json в cookie
как сохранить данные 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?
6 ответов
вы можете сериализовать данные как JSON, например:
$.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));
затем, чтобы получить его из cookie:
$("#ArticlesHolder").data(JSON.parse($.cookie("basket-data")));
это зависит от JSON.stringify()
и JSON.parse()
чтобы сериализовать / десериализовать объект данных, для старых браузеров (IEjson2.js для получения JSON
функциональность. В этом примере используется jQuery cookie плагин
Теперь уже нет необходимости использовать 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.печенье.js
использовать JSON.stringify(userData)
в coverty объект JSON в String.
var dataStore = $.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));
и для возвращения из использования cookie JSON.parse()
var data=JSON.parse($.cookie("basket-data"))
не рекомендуется сохранять значение, возвращаемое из JSON.stringify(userData)
для файлы cookie; это может привести к ошибке в некоторых браузерах.
прежде чем использовать его, вы должны преобразовать его в в base64 (через btoa
), и при его чтении конвертируйте из в base64 (через atob
).
val = JSON.stringify(userData)
val = btoa(val)
write_cookie(val)
с сериализацией данных как JSON и Base64, зависимость jquery.печенье.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
Быстрая Загрузка:
create-создать cookie
проверяем - проверяем наличие
verify-проверить значение cookie, если json
check_index-проверьте, существует ли индекс в JSON
read_values-читать значение cookie как string
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");