1

我像这样在 Rails 上设置了一个 cookie,

cookies[:account] = { :value => @account.to_s, :expires => 3.month.from_now }

这似乎工作正常,一个简单的debug @account节目

--- myvalue
…

但是当使用 jQuery.Cookie 调用 cookie 时,它​​会返回 a "[object Object]"

> $.cookie('account');
"[object Object]"

知道为什么会发生这种情况以及如何解决吗?

4

5 回答 5

3

我知道我在这里的答案很晚,但只是想我也会在这个问题上发布我的解决方案。我与这个返回 [object Object] 的 jQuery Cookie 问题斗争了几个小时,并发现了一些可能导致这种情况的情况:-

  • 相同的 cookie 名称但在不同的路径
  • 我发现传递了 path/expiry 的参数,插件有时将其视为我正在设置一个值,并且它试图设置一个类似 JSON 的对象,其中 path 和 expiry 作为值。
  • 使用加载时运行的 cookie 集代码加载脚本两次
  • AJAX 加载的内容刷新脚本可能会导致发生此问题。

最后,我决定使用 localStorage 选项,因为我存储的数据非常小,不值得浪费时间尝试让 jQuery cookie 工作。

我希望这对其他人有所帮助,并将他们从我所经历的沮丧中解救出来!

于 2016-06-02T14:52:31.580 回答
2

对于遇到此问题的任何其他人,请检查以确保您没有多个同名 cookie(具有不同的路径或到期时间)。这可能导致 $.cookie() 返回[object Object]

于 2014-03-28T19:23:13.493 回答
1

[object Object]是 的返回值Object.toString(),因此这意味着 $.cookie('account') 正在返回一个非数字、非字符串对象。

开始弄清楚返回值中的内容(以帮助您确定返回的对象中的内容)的方法是遍历属性以找出答案。

所以,像这样:

var obj = $.cookie('account');
var msg = [];
for(var i in obj)  msg.push( i +" = " + obj[i]);
alert(msg.join("\n")); // or console.log(msg.join("\n"));
于 2012-11-15T22:40:07.160 回答
1

您可以使用Mozilla 库。您将能够设置和获取这样的 cookie

docCookies.setItem(name, value);
docCookies.getItem(name);
于 2015-08-09T20:53:14.877 回答
0

Cookie 的最大大小仅为 4kb。这可能是原因之一。

至于我的情况。单看数据,它肯定超过 4kb。

我的替代方案是使用 localStorage。

于 2016-10-27T07:15:19.530 回答