jquery在cookie中保存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'}); 我想做一些

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

您可以将数据序列化为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));
}