1

このように Rails に Cookie を設定します。

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

正常に動作しているように見える、単純なdebug @accountショー

--- myvalue
…

ただし、jQuery.Cookie を使用して Cookie を呼び出すと、"[object Object]"代わりに a が返されます。

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

なぜこれが起こっているのか、それを解決する方法はありますか?

4

5 に答える 5

3

ここでの回答にかなり遅れていることは知っていますが、これにも私のソリューションを投稿すると思いました。[object Object] を返す jQuery Cookie の問題と何時間も戦い、これを引き起こす可能性のあるケースをいくつか見つけました:-

  • Cookie 名は同じですが、パスが異なります
  • パス/有効期限のパラメーターを渡すと、プラグインがこれを値を設定しているかのように処理することがあり、パスと有効期限を値として使用して JSON のようなオブジェクトを設定しようとしていたことがわかりました。
  • ロード時に実行される Cookie セット コードでスクリプトを 2 回ロードする
  • AJAX で読み込まれたコンテンツがスクリプトを更新すると、この問題が発生する可能性があります。

最後に、保存されているデータが非常に小さく、jQuery Cookie を機能させるために無駄な時間を費やす価値がないため、localStorage オプションを使用することにしました。

これが他の誰かを助け、私が持っていた何時間もの欲求不満から彼らを救うことを願っています!

于 2016-06-02T14:52:31.580 に答える
1

[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"));
于 2012-11-15T22:40:07.160 に答える