2012-01-29 12 views
11

私は、クッキーを使用するjQueryを使用してアプリケーションを開発しています。現在、私のPCのデスクトップのapplication.htmlにあります。jQuery Cookieが実際にCookieを設定しないのはなぜですか?

しかし、私はクッキーを保存して取り出すことができません。私はjquery-1.7.1.min.js,json2.js、およびjquery.cookie.jsをHTMLファイルにこの順に含めました。ここで

は私が7日間続くためにクッキーを格納しています方法です:

$.cookie("people", JSON.stringify(people_obj_array), {expires: 7}); 

グローバル配列people_obj_array

[ 
     { 
      "name": "Adam", 
      "age": 1, 
     }, 
     { 
      "name": "Bob", 
      "age": 2, 
     }, 
     { 
      "name": "Cathy", 
      "age": 3, 
     }, 
    ] 

のように見える私はalert(JSON.stringify(people_obj_array))とJSONの暗号化をテストする場合は、罰金になります。

JSON test

私は経由でこのクッキーを取得するときしかし、:偶数ページを更新する前に

alert($.cookie("people")); 

、アラートが読み取るポップアップする「ヌル。」テキストをアラートJSON文字列にするべきではありませんか?私はJQueryクッキーライブラリを正しく使用していますか?

$.cookie("people", JSON.stringify(people_obj_array), {expires: 7}); // store 
alert($.cookie("people")); // attempt to retrieve 

を私はFirebugのを持っている、と私はいくつかのコンソールのテストを行うには喜んでいます:ちょうどここに、明確にする


は、私がテストしてい方法です。

+2

私は問題がクッキーのメカニズムは、ローカルディスク上のファイル用に定義されていないということだと思います。あなたは、ローカルのWebサーバーをセットアップし、HTTP 'としてファイルにサービスを提供しようとしている:// localhost /をapplication.html'? –

+0

ありがとう!私はちょうどローカルストレージを使用して終了しました。はるかに簡単で、ローカルでもWebサーバーでも動作します。欠点は、もちろん、古いブラウザはそれをサポートしていない、それは私のためには大丈夫です。 http://coding.smashingmagazine.com/2010/10/11/local-storage-and-how-to-use-it/ – dangerChihuahua007

答えて

11

ファイルがデスクトップに存在していることが原因で問題が発生している可能性があります。ブラウザは通常、受信したドメインとそのパスに基づいてクッキーを提供することによって動作します。

あなたはすぐにそれを設定した後に、クッキーを読み取ることができない場合があります。クッキーを書き込むと、HTTPリクエストのヘッダーを設定すると、同様に、それらの読み取りがHTTPレスポンスのヘッダーを読み込む必要が含まれます。

は、Webサーバー上のページをホスティングしてみて、それがあなたのために働くかどうかを確認します。

+0

ありがとう、私は公共のWebサーバー上でサイトをホストし、クッキーが機能しました。このページには詳細があります:http://code.google.com/p/chromium/issues/detail?id=535 – dangerChihuahua007

+1

@DavidFauxはChromiumを使用しているようですので、linuxを使っているとも推測できます。あなたが 'sudo apt-get install lamp-server ^'と 'sudo adduser www-data'をテストするためにローカルウェブサーバーをセットアップしたいなら、次の2つのコマンドを実行します。 'sudo chown -R www-data:www-data/var/www'と' sudo chmod -R g + rw/var/www'はちょうどそれを行うべきです!すべてのWeb開発者は '/ var/www'に入り、http:// localhost/ – rlemon

+0

に答えてテストします:) –

1

私の研究からは、かなり古いですし、は、もはや維持されると思われます。代わりにthis libraryを使用する方が良い運があるかもしれません。 Google Codeに関する記述は、「jQueryバインディングとJSONサポートを備えたJavascript Cookie Library」であり、実行しようとしているすべてのメソッドが含まれています。

+0

ありがとう、私はこれを念頭に置いておきます。 – dangerChihuahua007

+0

jquery.cookieの最終更新日は7日前、2013-09-11です。非常に便利なコンポーネントを使用しています。 – foxontherock

+0

彼らは再び開発を受けたことがあります。私がこのコメントをしたとき、図書館は2年以上も更新されていませんでした。 – daniel0mullins

2

あなたは自分自身のクッキーの機能を構成していない理由は、クッキープラグインとのトラブルを抱えている場合は?読み取り、書き込み、および(オプション)削除。

var createCookie = function(name, value, days) { 
    if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 
     var expires = '; expires=' + date.toGMTString(); 
    } 
    else var expires = ''; 
     document.cookie = name + '=' + value + expires + '; path=/'; 
}; 
var readCookie = function(name) { 
    var nameEQ = name + '='; 
    var ca = document.cookie.split(';'); 
    for (var i = 0; i < ca.length; i++) { 
     var c = ca[i]; 
     while (c.charAt(0) == ' ') c = c.substring(1, c.length); 
     if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); 
    } 
    return null; 
}; 
var eraseCookie = function(name) { 
    createCookie(name, '', -1); 
}; 

特定のプラグインには一度もコメントしていませんが、これらの機能はすべて動作しテストされています。だからあなた例えば

createCookie("people", JSON.stringify(people_obj_array), 7); // store 
alert(readCookie("people")); // retrieve 
eraseCookie("people"); // remove 
alert(readCookie("people")); // oo look i'm no longer here. 
+1

これはローカルディスク上のWebページで有効ですか?一部のブラウザでは、ローカルのCookieをまったく処理しません。 –

+1

私はそのケースをテストしていません。ただし、クッキーがローカルで利用できない場合、OPが最新のブラウザ*ローカルストレージを使用していると仮定すると、うまくいくはずです。 – rlemon

+0

ありがとう!ローカル記憶域はすばやく動作しています。それもとても簡単です。 http://coding.smashingmagazine.com/2010/10/11/local-storage-and-how-to-use-it/ – dangerChihuahua007

関連する問題