jquery在cookie中保存json数据对象
如何保存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数据中提取出来?
您可以将数据序列化为JSON,如下所示:
$.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));
然后从cookie中获取它:
$("#ArticlesHolder").data(JSON.parse($.cookie("basket-data")));
这依赖于JSON.stringify()
和JSON.parse()
来序列化/反序列化您的数据对象,对于较旧的浏览器(IE <8)包含json2.js以获得JSON
function。 这个例子使用jQuery cookie插件
现在已经不需要明确地使用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页面中
使用JSON.stringify(userData)
将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)
试试这个: https : //github.com/tantau-horia/jquery-SuperCookie
快速使用:
创build – 创buildcookie
检查 – 检查存在
validation – validationcookie值如果JSON
check_index – validation索引是否存在于JSON中
read_values – 以stringforms读取cookie值
read_JSON – 读取cookie值作为JSON对象
read_value – 读取存储在JSON对象中的索引的值
replace_value – replace存储在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");