为什么jQuery.cookie为单个字符串值返回“”

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

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

这似乎工作得很好,一个简单的debug @account显示

 --- myvalue … 

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

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

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

[object Object]Object.toString()的返回值,这意味着$ .cookie(’account’)返回一个非Number,非String对象。

在开始计算返回值中的内容(为了帮助您确定返回的对象中的内容)的方法是循环遍历属性以找出它。

所以,像这样:

 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")); 

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

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

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

我希望这可以帮助别人,并将他们从我所受的挫折中拯救出来!

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

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

 docCookies.setItem(name, value); docCookies.getItem(name); 

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

至于我的情况。 单独查看数据肯定会超过4kb。

我的另一种选择是使用localStorage。