Mar*_*hin 107 cookies jquery 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'});
Run Code Online (Sandbox Code Playgroud)
我想做点什么
var dataStore = $.cookie("basket-data", $("#ArticlesHolder").data());
Run Code Online (Sandbox Code Playgroud)
和检索数据我想将其加载到$("#ArticlesHolder")
像
$.each($.cookie("basket-data"), function(i,e){
$("#ArticlesHolder").data(i, e);
});
Run Code Online (Sandbox Code Playgroud)
有没有人知道我是在正确的轨道上还是应该以其他方式完成?简单地说,我如何从cookie中提取和提取json数据?
Nic*_*ver 192
您可以将数据序列化为JSON,如下所示:
$.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));
Run Code Online (Sandbox Code Playgroud)
然后从cookie中获取它:
$("#ArticlesHolder").data(JSON.parse($.cookie("basket-data")));
Run Code Online (Sandbox Code Playgroud)
这依赖于JSON.stringify()
和JSON.parse()
序列化/反序列化您的数据对象,对于较旧的浏览器(IE <8)包括json2.js来获取JSON
功能.此示例使用jQuery cookie插件
Vit*_*kov 40
现在已经没有必要JSON.stringify
明确使用了.只需执行这行代码即可
$.cookie.json = true;
Run Code Online (Sandbox Code Playgroud)
之后,您可以将任何对象保存在cookie中,在读取cookie时,该对象将自动转换为JSON并从JSON返回.
var user = { name: "name", age: 25 }
$.cookie('user', user);
...
var currentUser = $.cookie('user');
alert('User name is ' + currentUser.name);
Run Code Online (Sandbox Code Playgroud)
但JSON库没有附带jquery.cookie,所以你必须自己下载并在jquery.cookie.js之前包含到html页面中
用于JSON.stringify(userData)
将json对象转换为字符串.
var dataStore = $.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));
Run Code Online (Sandbox Code Playgroud)
并从cookie使用回来 JSON.parse()
var data=JSON.parse($.cookie("basket-data"))
Run Code Online (Sandbox Code Playgroud)
JSON.stringify(userData)
保存从cookie返回的值并不是一个好习惯;它可能会导致某些浏览器出现错误。
在使用它之前,您应该将其转换为base64(使用btoa
),并且在读取它时,从base64转换(使用atob
)。
val = JSON.stringify(userData)
val = btoa(val)
write_cookie(val)
Run Code Online (Sandbox Code Playgroud)