jquery在cookie中保存json数据对象

时间:2010-11-19 12:38:17

标签: jquery cookies jquery-cookie

如何在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数据?

6 个答案:

答案 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()

从cookie中取回
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");