我想将 Javascript 数组存储为 Cookie

Posted

技术标签:

【中文标题】我想将 Javascript 数组存储为 Cookie【英文标题】:I want to store Javascript array as a Cookie 【发布时间】:2011-02-28 03:18:57 【问题描述】:

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

【问题讨论】:

看我创建的这个例子*** 【参考方案1】:

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?

【讨论】:

这拯救了我的一天!谢谢。【参考方案2】:

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

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

然后简单地使用字符串split()方法从cookie字符串中取回数组。

【讨论】:

一个小修正,它需要像这样分配为新变量,var new_a = a.join('|'),它将返回“1|2|3|4”。【参考方案3】:

对于数组中的每个值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 />';

?>

【讨论】:

以上是关于我想将 Javascript 数组存储为 Cookie的主要内容,如果未能解决你的问题,请参考以下文章

在 MYSQL 数据库中存储包含对象的 javascript 数组?

如何在javascript中查找重复值并将重复值存储到新数组中

我想用 JavaScript 将对象数组转换为对象 [重复]

我想将产品添加到表中,但是当我添加新产品时,它的数量和小计会使用 Javascript 刷新(默认为 1)

跨多个页面设置javascript全局变量[重复]

从 javascript 数组创建 HTML 表