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以获得JSONfunction。 这个例子使用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");