11

Cookie を使用する jQuery を使用してアプリケーションを開発しています。現在、それはapplication.html私の PC デスクトップにあります。

ただし、Cookie の保存と取得はできません。jquery-1.7.1.min.jsjson2.js、およびjquery.cookie.jsをこの順序で HTML ファイルに含めました。

7日間持続するようにCookieを保存する方法は次のとおりです。

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

グローバル配列people_obj_arrayは次のようになります

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

で JSON 暗号化をテストするとalert(JSON.stringify(people_obj_array))、問題ないように見えます。

JSON テスト

ただし、次の方法でこのCookieを取得すると:

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

ページを更新する前に、「null」というアラートが表示されます。テキストはアラートの JSON 文字列であるべきではありませんか? JQuery Cookie ライブラリを正しく使用していますか?


明確にするために、ここに私がテストしている方法があります:

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

私は Firebug を持っており、いくつかのコンソール テストを実行したいと考えています。

4

3 に答える 3

11

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

Cookie を設定した直後に読み取ることができない場合があります。Cookie の書き込みには HTTP 要求のヘッダーの設定が含まれ、同様に、それらの読み取りには HTTP 応答のヘッダーの読み取りが含まれます。

Web サーバーでページをホストしてみて、それが機能するかどうかを確認してください。

于 2012-01-29T19:56:19.530 に答える
2

Cookie プラグインに問題がある場合は、独自の Cookie 関数を作成してみませんか? 読み取り、書き込み、および (オプション) 削除。

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.
于 2012-01-29T19:58:29.920 に答える
1

私の調査によると、かなり古く、もはや維持されてjquery.cookie.jsいないようです。代わりにこのライブラリを使用すると、よりうまくいくかもしれません。Google Code でのその説明は、「jQuery バインディングと JSON サポートを備えた Javascript Cookie ライブラリ」であり、実行しようとしているすべてのメソッドが含まれています。

于 2012-01-29T19:57:14.970 に答える