jquery在cookie中保存json数据对象
如何在cookie中保存JSON数据 我的JSON数据如下所示jquery在cookie中保存json数据对象,jquery,cookies,jquery-cookie,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'}); 我想做一些
$("#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(userData)
将JSON对象转换为字符串)
var dataStore = $.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));
要从cookie返回,请使用JSON.parse()
试试这个:
快速使用:
创建-创建cookie
检查-检查存在
验证-如果是JSON,则验证cookie值
检查索引-验证JSON中是否存在索引
读取\u值-将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");
现在已经不需要显式地使用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);
但是jquery.cookie中没有JSON库,所以您必须自己下载它,并在之前将其包含在html页面中。将从
JSON.stringify(userData)
返回的值保存到cookie中不是一个好的做法;它可能会导致某些浏览器中出现错误
在使用它之前,您应该将其转换为base64(使用btoa
),在读取它时,从base64转换(使用atob
)
通过将数据序列化为JSON和Base64,dependency 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));
}
:)只是迂腐,但你的问题中没有“JSON数据”。您有一些通过对象文字符号定义的JavaScript对象(不是JSON,JSON是对象文字符号的子集),但没有JSON。您几乎肯定希望使用JSON作为在cookie字符串中存储对象的数据格式,尽管在cookie for Opera中不允许使用.JSON,因为自古以来我也有这个错误。即使@cookie@plugin使用@encodeURIComponent@,pbug也不应该出现。这个问题和答案让我相信
cookie
是jQuery中的内置函数。看来不是。还是已经弃用了。。?如果是我找到的插件,链接到它会很好地避免混淆…@TJ它确实是一个插件,jQuery cookie插件。你可以在这里找到它:我真的很想知道为什么现在它不在内核中……在某些浏览器中使用它时要小心。,
(逗号)字符可能导致cookie在safari和其他浏览器中设置不正确。如果不需要jQuery,您也可以使用这个强大的轻量级cookie库。[libI在没有$.cookie.json=true的情况下尝试了这种方法,得到了[object]作为我的cookie值。然后将其设置为true并尝试将对象直接传递给cookie,但没有填充cookie。@jacobross85我认为我们中的一些人可能正在使用较旧版本的jquery.cookie.js,请检查源代码,有时错误的文件处于活动状态。请注意,这将导致cookie被普遍使用因此,盲目添加$cookie.JSON=true
可能会导致与其他cookie冲突。因此,在已在其他地方使用cookie的项目中使用此选项时要小心!您有复杂JSON的解决方案吗?我的JSON中有一个JSON数组,其中一些属性包含JSON,并且…您是否有对浏览器的引用这有问题吗?我在django平台上的chrome上使用JSON列表作为cookie。这有一些问题。另外,最好在服务器端向用户隐藏cookie传递的实际数据,Python的标准cookie处理将拒绝包含{
或}的cookie
,然后在cookie标头中无声地删除拒绝的cookie之后的任何cookie。
val = JSON.stringify(userData)
val = btoa(val)
write_cookie(val)
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));
}