我们可以在javascript中将对象分配到cookie中吗?

时间:2009-08-14 05:44:57

标签: javascript

有谁知道可以在javascript中将对象分配到cookie中吗?如果是的话,我们怎么做呢?

7 个答案:

答案 0 :(得分:6)

如果您可以将对象序列化为其规范字符串表示形式,并且可以从所述字符串表示形式将其反序列化为其对象形式,则可以将其放入cookie中。

根据您earlier question关于将window.open()的结果存储到Cookie中的判断,这不是您希望的答案。

答案 1 :(得分:3)

这是一种方法,

  1. 将您的对象序列化为JSON。
  2. Base64编码JSON。
  3. 使用Base64编码的字符串作为cookie值。
  4. 阅读Cookie时,只需撤消该过程。

    您必须使用版本1 Cookie,因为需要引用Base64字符集。如果您想使用旧的Netscape样式cookie,则需要使用URL安全的Base64编码器。

    当然,这只适用于小物件。

答案 2 :(得分:1)

您需要序列化您的对象,然后将其作为文本写出来。我会考虑使用JSON,因为它得到了很好的支持。

有一个很好的解析器here。您只需要调用JSON.stringify()方法。要在javascript中编写cookie,您需要以正确的格式附加一个字符串

window.document.cookie

字符串应采用以下格式

'name=cookiename; expires=Thu, 2 Aug 2001 20:47:11 UTC; path=/'

答案 3 :(得分:0)

Serializing Javascript Objects into Cookies

var expires = new Date();
expires.setDate(expires.getDate() + 7); // 7 = days to expire
document.cookie = "logintoken=somelogintoken;expires=" + expires.toGMTString();

同时阅读JavaScript Cookies

答案 4 :(得分:0)

Cookies只存储字符串值,因此您需要以某种方式将对象序列化为字符串。当你从cookie中读取它时,反序列化它。但是,只有当您的对象具有一些简单的数据(字符串,数字,数组),并且无法使用函数时,这才有效。我也不确定你为什么要那样做。

答案 5 :(得分:0)

Cookie只能保存文本,因此如果您需要将对象序列化为一个简单的字符串,则可以使用它。

在大多数浏览器中,Cookie限制为+ - 4096字节,因此您无法存储太多信息。

答案 6 :(得分:-2)

我认为只允许4kb的cookie