Jquery save 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?
Ответы
Ответ 1
Вы можете сериализовать данные как JSON, например:
$.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));
Затем, чтобы получить его из файла cookie:
$("#ArticlesHolder").data(JSON.parse($.cookie("basket-data")));
Это зависит от JSON.stringify()
и JSON.parse()
для сериализации/десериализации вашего объекта данных, для старых браузеров (IE < 8) include json2.js, чтобы получить функциональность JSON
. В этом примере используется jQuery cookie
Ответ 2
Теперь нет необходимости явно использовать 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
Ответ 3
используйте JSON.stringify(userData)
для скрытого json-объекта для строки.
var dataStore = $.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));
и для возврата из использования файла cookie JSON.parse()
var data=JSON.parse($.cookie("basket-data"))
Ответ 4
Не рекомендуется сохранять значение, возвращаемое из JSON.stringify(userData)
в файл cookie; это может привести к ошибке в некоторых браузерах.
Прежде чем использовать его, вы должны преобразовать его в base64 (используя btoa
), а при его чтении переведите его из base64 (используя atob
).
val = JSON.stringify(userData)
val = btoa(val)
write_cookie(val)
Ответ 5
Попробуйте следующее:
https://github.com/tantau-horia/jquery-SuperCookie
Быстрое использование:
create - create cookie
проверить - проверить существование
verify - проверить значение 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");