如何在Cookie中保存JSON数据?
我的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);
});
有人知道我是在正确的轨道上还是应该以其他方式完成?简单地说,我如何从cookie中提取和提取json数据?
答案 0 :(得分:189)
您可以将数据序列化为JSON,如下所示:
$.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));
然后从cookie中获取它:
$("#ArticlesHolder").data(JSON.parse($.cookie("basket-data")));
这依赖于JSON.stringify()
and JSON.parse()
序列化/反序列化您的数据对象,对于旧浏览器(IE< 8)包括json2.js来获取JSON
功能。此示例使用jQuery cookie plugin
答案 1 :(得分:40)
现在已经没有必要明确使用JSON.stringify
了。只需执行这行代码
$.cookie.json = true;
之后,您可以将任何对象保存在cookie中,当读取cookie时,该对象将自动转换为JSON并从JSON返回。
var user = { name: "name", age: 25 }
$.cookie('user', user);
...
var currentUser = $.cookie('user');
alert('User name is ' + currentUser.name);
但JSON库并没有附带jquery.cookie,所以你必须自己下载并在jquery.cookie.js
之前包含在html页面中答案 2 :(得分:7)
使用JSON.stringify(userData)
将json对象转换为字符串。
var dataStore = $.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));
并使用JSON.parse()
var data=JSON.parse($.cookie("basket-data"))
答案 3 :(得分:3)
将JSON.stringify(userData)
返回的值保存到Cookie是不太好的做法;它可能导致某些浏览器出现错误。
在使用之前,您应该将其转换为 base64 (使用btoa
),并在阅读时,从 base64 转换(使用{{1} })。
atob
答案 4 :(得分:2)
将数据序列化为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));
}
:)
答案 5 :(得分:0)
试试这个: https://github.com/tantau-horia/jquery-SuperCookie
快速使用:
创建 - 创建cookie
检查 - 检查存在
验证 - 如果JSON
,则验证cookie值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");