如何将 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);
});

有谁知道我是否走在正确的轨道上或者应该以其他方式完成?简而言之,如何从 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 功能。此示例使用 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的HTML页面。 cookie.js

使用JSON.stringify(userData)到coverty JSON对象到字符串。

var dataStore = $.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));

和用于获取从饼干使用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)

通过串行化的数据作为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));
}

:)

尝试这一个: https://github.com/tantau-horia/jquery-SuperCookie

  

快速用法:

     

创建 - 创建的cookie

     

检查 - 检查所有脑干

     

验证 - 验证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");
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top