• 締切済み

Cookieの読み込み

以下の内容をご覧下さい 例1   :   :  (以上のコードは省略) aData = 1; …適当に1を格納 bNo = 1;  …同上 if( setCookie( \"a\",aData,\"b\",bNo ) ) {   :   :  (処理省略)   : }   :   :  (処理省略)   : data = getCookie( \"a\" );   :   : //------------------------------------------------------ // cookieの保存 //------------------------------------------------------ function setCookie(theNameA,theValueA,theNameB,theValueB) { eDate = new Date(); eDate.setTime( eDate.getTime()+( eDate * 1000 * 60 * 60 * 24 ) ); eFile = eDate.toGMTString(); document.cookie = theNameA + \"=\" + escape( theValueA ) + \";\" + theNameB + escape( theValueB ) + \"=\" + \";expires=\" + eFile; return true; } 上記の内容では24時間後期限のCookieを生成しました。 Cookieの中身は a=1↑b=1↑…となっていると思います。 そして今度はcookieからデータを抜き出すのですが、 //------------------------------------------------------ // cookieの呼び出し //------------------------------------------------------ function getCookie( theName ) { theName += \"=\"; cookie = document.cookie+\";\"; convSfile = cookie.indexOf( theName ); if( convSfile != -1 ) { convEfile = cookie.indexOf(\";\",convSfile); return unescape(cookie.substring(convSfile + theName.length,convEfile)); } return false; } これでデータを抜き出そうとすると、convSfileが-1で帰ってくる 為、falseでdataに帰ってしまいます。この場合、どこに問題があるのでしょうか。ご教授お願い致します。

みんなの回答

回答No.2

http://oshiete1.goo.ne.jp/qa3071806.html のソースと変わって、 『"』が全部『\"』とエスケープされているんですが、何故ですか? 取り敢えず、そこは全て『"』に戻してください。 多分、cookieを設定する際、 2つのデータを一気にcookieに保存しようとしているのが問題だと思います。 なので、     document.cookie = theNameA + "=" + escape(theValueA) + ";expires=" + eFile;     document.cookie = theNameB + "=" + escape(theValueB) + ";expires=" + eFile; と、 それぞれ別々に分けてcookieに設定すれば大丈夫なのでは? と、以前に書いたcookie読み書きオブジェクトがあったんで、 参考までにどうぞ。 事前に、     var hoge = new Cookie(); とCookieオブジェクトを作っておいて、     //名前id、値value、期限life日でcookieを設定     hoge.setCookie(id, value, life);     //名前idのcookieの値を取得、ない場合はnullを返す     hoge.getCookie(id);     //名前idのcookieを削除     hoge.deleteCookie(id); として使用します。 ---------- /******************************************************************** * Cookieオブジェクト ********************************************************************/ function Cookie(){     this.value = new Array();     var _cookie = document.cookie;     if(_cookie == ''){         return;     }     if(_cookie.charAt(_cookie.length - 1) == ';'){         _cookie = _cookie.substring(0, _cookie.length - 1);     }     _cookie = _cookie.split(';');     for(var i=0; i<_cookie.length; i++){         _cookie[i] = _cookie[i].split('=');         //クッキーのid名の先頭の空白を取り除く         //クッキーの値区切りの『;』の後に、空白が入るため         var idHead;         for(idHead=0; idHead<_cookie[i][0].length; idHead++){             if(_cookie[i][0].charAt(idHead)!=' ' && _cookie[i][0].charAt(idHead)!='\t'){                 break;             }         }         _cookie[i][0] = _cookie[i][0].substring(idHead, _cookie[i][0].length);         this.value[_cookie[i][0]] = unescape(_cookie[i][1]);     } } /* * クッキーに値をセットする */ Cookie.prototype.setCookie = function (id, value, life){     value = value.toString();     this.value[id] = value;     var _cookie = id + '=' + escape(value) + ';'     if(life != null){         if(life <= 0){             delete(this.value[id]);             life = new Date(0);         } else {             life = new Date(new Date().getTime() + life * 24*60*60*1000)         }         _cookie += 'expires=' + life.toGMTString() + ';'     }     document.cookie = _cookie; }; /* * クッキーから値を取得する */ Cookie.prototype.getCookie = function (id){     return this.value[id]; }; /* * クッキーから値を削除する */ Cookie.prototype.deleteCookie = function (id){     this.setCookie(id, null, 0); }; ----------

Lotus_Nots
質問者

補足

\が何故か至る所に入っていました。 こちらで入力した覚えがないので おそらく文章をコピーして貼り付けた際に バグが発生したのではないかと思います。 一度参考でやって見ます。ありがとうございます。

すると、全ての回答が全文表示されます。
  • haraga
  • ベストアンサー率56% (36/64)
回答No.1

eDate.setTime( eDate.getTime()+( eDate * 1000 * 60 * 60 * 24 ) ); >> eDate.setTime( eDate.getTime()+(1000 * 60 * 60 * 24 ) ); ではありませんか?

Lotus_Nots
質問者

補足

今は期限云々ではなく、 読み込みの質問でございますので 回答致しません。

すると、全ての回答が全文表示されます。

関連するQ&A