javascript - 在 JavaScript 中将数组保存到 cookies

标签 javascript cookies

我正在尝试在 cookies 中保存数组:

setCookie("a", JSON.stringify([{a:1},{a:2}]))

但是浏览器似乎存储了我的字符串的解码版本,当我尝试检索它时:

JSON.parse(getCookie("a"))

我遇到解析错误。有什么办法可以解决这个问题?

最佳答案

以下是如何在 javascript 中创建/获取具有数组值的 cookie

对其进行 JSON 编码,有效地生成一个类似于 "{name:'myname',age:'myage'}" 的字符串,您将其放入 cookie 中,在需要时检索并解码回 JavaScript数组/对象。

示例 - 将数组存储在 cookie 中:

var arr = ['foo', 'bar', 'baz'];
var json_str = JSON.stringify(arr);
createCookie('mycookie', json_str);

稍后,以数组形式检索 cookie 的内容:

var json_str = getCookie('mycookie');
var arr = JSON.parse(json_str);

注意: cookie 函数不是原生的,取自 How do I create and read a value from cookie? ,见下文:

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

function getCookie(c_name) {
    if (document.cookie.length > 0) {
        c_start = document.cookie.indexOf(c_name + "=");
        if (c_start != -1) {
            c_start = c_start + c_name.length + 1;
            c_end = document.cookie.indexOf(";", c_start);
            if (c_end == -1) {
                c_end = document.cookie.length;
            }
            return unescape(document.cookie.substring(c_start, c_end));
        }
    }
    return "";
}

关于javascript - 在 JavaScript 中将数组保存到 cookies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58396940/

相关文章:

javascript - resource.get({id :1},callback).$promise 在 Angular 1.2.3 中未定义

asp.net - .Net System.Net.HttpWebRequest 和身份验证 Cookie

javascript - immutableJS - updateIn 方法无法按预期工作

javascript - 检测 Chrome 浏览器安装是否为 64 位

PHP Curl 和 setcookie 问题

PHP $_COOKIE 未完全填充

c# - 向 100K 用户添加 cookie 时要考虑的性能问题?

javascript - 在文档准备好之前创建 cookie 安全吗?

php - AJAX 脚本会在 PHP 中保持 session 吗?

javascript - jQuery 游戏问题