質問: true;」(以下「JSON化」)を書いてJSONを保存しているのですが、困ったことに普通に下記のような文字列までが変換されまい、部分的に適用することができないように思われます。 ``` $(window).on("beforeunload",function(e){ $.cookie( 'alphabet', 'abc', { expires: 365, path:'/'} ); }); // こうなる // %22abc%22 ``` でこの仕様について質問です。下記ざっくり➂つもあって恐縮ですが、ご見解をお聞かせ願えませんでしょうか? ### 質問➀ なぜ「JSON化」を書かないときは「abcという文字列」(abc)が保存されるのに、 書くと「"abc"という文字列をURIエンコードした文字列」(%22abc%22)が保存されるのでしょうか? 「"」が入る理由と、それがURIエンコードされて「%22」になる理由が知りたいです。 ### 質問➁ なぜ文字列のときは➀のように「URIエンコード」されるのに、配列のときは「JSONエンコード」されるのでしょうか? ### 質問➂ みなさん実際にどう使っていますか? ・「JSON化」は使わずに、その都度「JSON.parse()」や「JSON.stringify()」を使う。 ・文字列も含めていったんすべて「JSON化」の対象にして、PHPで使うときはその都度「urldecode()」を使う。 ・その他あればぜひお願いします。
回答: > > みなさん実際にどう使っていますか? > > > Cookieとして**サーバサイドとやり取りする**値がJSONのような複雑な値を含む必要があることはそうそうないと思いますので、ブラウザ内だけで使う値なら「`localStorage`に入れて**Cookieを使わない**」というのが正解かと思います(なお、`localStorage`も文字列専用なので、`JSON.parse`などは必要となります)。