Javascript JSON编码的数组在保存为cookie时转换为字符串

Javascript JSON编码的数组在保存为cookie时转换为字符串,javascript,json,cookies,Javascript,Json,Cookies,我有一个简单的数组,我正在尝试对其进行JSON编码并设置为cookie。我正在使用json2.js脚本编码为JSON。我正在使用以下代码设置cookie: jQuery(document).ready(function(){ var ids = ['1', '2']; JSON.stringify(ids); setCookie(cookieName, ids, 1); }); function setCookie(name,value,days) { if (

我有一个简单的数组,我正在尝试对其进行JSON编码并设置为cookie。我正在使用json2.js脚本编码为JSON。我正在使用以下代码设置cookie:

jQuery(document).ready(function(){
    var ids = ['1', '2'];
    JSON.stringify(ids);
    setCookie(cookieName, ids, 1);
});

function setCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}
将数组转换为JSON并将其记录到控制台后,我得到:

["1", "2"]
1,2
这正是我所期望的。然后,我用以下函数读取cookie

function getCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}
这表明它是一个字符串,不再是JSON编码的对象。我希望能够将cookie设置为JSON编码的对象,读取并解析JSON对象,最后对数据执行操作。因此,我的问题是,如何将一个JSON编码的对象发送到cookie,以便在读取它时将其解析为JSON


一如既往地谢谢你

我没有看到您实际使用JSON字符串化的结果:

jQuery(document).ready(function(){
    var ids = ['1', '2'];
    setCookie(cookieName, JSON.stringify(ids), 1);
});
改为尝试此操作

更改此操作:

JSON.stringify(ids);
setCookie(cookieName, ids, 1);
为此:

var str = JSON.stringify(ids);
setCookie(cookieName, str, 1);

不要使用这些cookie函数,它们是有缺陷的
setCookie
无法正确编码名称和值,并且对于具有公共后缀的Cookie,
getCookie
也无法正确编码(请参阅)

对于
setCookie

function setCookie(name, value, days) {
    var expires = "";
    if (days > 0) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        expires = "; expires="+date.toGMTString();
    }
    document.cookie = encodeURIComponent(name)+"="+encodeURIComponent(value)+expires+"; path=/";
}

非常感谢你!这就是我问这些问题的原因。经过一段时间的研究,我看不到像这样的小问题。+1非常感谢!很明显,嗯?真奇怪,我没听清楚。谢谢你的建议!我来试一试。我实现了这个函数;但是,由于这样做,当我尝试使用
setCookie(name,“,-1)删除cookie时它只删除cookie的值,而不是完全删除cookie。在将其更改为您的功能之前,它将按预期工作。有什么想法吗?再次感谢!我通过设置
var expires=“;expires=Thu,1970年1月1日00:00:01 GMT”解决了这个问题