【问题标题】:Saving an array to cookies in javascript在 javascript 中将数组保存到 cookie
【发布时间】:2020-02-12 06:26:42
【问题描述】:

我正在尝试在 cookie 中保存一个数组:

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

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

JSON.parse(getCookie("a"))

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

【问题讨论】:

  • 看到这个stackoverflow.com/questions/2980143/…,我认为是同一个问题。
  • JavaScript 中没有内置的setCookie,所以你应该告诉我们这个函数的作用。
  • 由于 setCookie 不是原生的,以下链接将帮助您设置/获取 cookie:stackoverflow.com/questions/4825683/…
  • @ArunKumarSaini 我自己编写了 setCookie 函数,它运行良好。问题是 cookie 是保存编码的,并在保存时以 % 开头。
  • @HadiRanjbar ,setCookie 函数是否适用于字符串值?此外,如果您通过发布 setCookie 函数来更新问题也会很有帮助。

标签: javascript cookies


【解决方案1】:

尝试使用createCookie 和getCookie。它会给你一个解析器错误,因为 getCookie("a") 返回 undefined。

【讨论】:

  • 解析器错误说明了什么?通常他们会提供错误的来源
【解决方案2】:

这里是如何在 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 "";
}

【讨论】:

    【解决方案3】:

    尝试将 JSON 数据序列化为单个字符串并将其保存在 cookie 中,同时将其读回反序列化字符串并将其转换回 JSON 字符串或 JSON 对象

    【讨论】:

    • 我已经按照你说的做了。问题是cookie在保存时被编码。
    猜你喜欢
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    相关资源
    最近更新 更多