我想将 Javascript 数组存储为 Cookie

IT技术 javascript jquery cookies
2021-02-26 11:42:43

是否有可能,我有某种列表,我想将它存储在浏览器上,如果不可能,这样做的有效方法是什么?

3个回答

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 函数不是原生的,取自如何从 cookie 创建和读取值?

这拯救了我的一天!谢谢。
2021-04-20 11:42:43

一种快速方法是join()使用适当的分隔符将数组转换为单个字符串:

var a = [1, 2, 3, 4];
a.join('|');  // Returns: "1|2|3|4"

然后只需使用 stringsplit()方法从 cookie 字符串中取回数组。

一个小的修正,它需要像这样被分配为新变量,var new_a = a.join('|')它将返回“1|2|3|4”。
2021-05-08 11:42:43

对于数组中的每个值 id,请尝试以下方法将值保存在 cookie 数组中:

<script type="text/javascript">

/**
 * set cookie
 */
function set_cookie(cookiename, cookievalue, hours) {
    var date = new Date();
    date.setTime(date.getTime() + Number(hours) * 3600 * 1000);
    document.cookie = cookiename + "=" + cookievalue + "; path=/;expires = " + date.toGMTString();

}

set_cookie('item['+id+']', id, 24*365*10); // 10 years

</script>

你可以在 php 中检索这个数组:

<?php
foreach($_COOKIE['item'] as $e){
echo $e,'<br />';
}
?>