我正在尝试在 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/