jquery将json数据对象保存在cookie中
-
26-09-2019 - |
题
如何将 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");