2

Cookieが存在するかどうかを確認したい

問題は、チェックすると常にnullに戻ることです

if ($.cookie('cookieCreditDash') == null) {

   //CODE ALWAYS ENTER HERE... :(
            alert("no cookie");    
            $.getJSON(url, function(data) {
                saveCreditCookie(data);
            });
} else{
            alert("with cookie");
            var data =  JSON.parse($.cookie("cookieCreditDash"));
}

function saveCreditCookie(jsonData){
    var date = new Date();
    date.setTime(date.getTime() + (30 * 60 * 1000));
    $.cookie("cookieCreditDash", JSON.stringify(jsonData), {expires: date});
 }

なぜ>??

ところで、私は次のプラグインを使用しました:

(function ($, document, undefined) {
        var pluses = /\+/g;
        function raw(s) {
            return s;
        }
        function decoded(s) {
            return decodeURIComponent(s.replace(pluses, ' '));
        }
        var config = $.cookie = function (key, value, options) {
            // write
            if (value !== undefined) {
                options = $.extend({}, config.defaults, options);
                if (value === null) {
                    options.expires = -1;
                }
                if (typeof options.expires === 'number') {
                    var days = options.expires, t = options.expires = new Date();
                    t.setDate(t.getDate() + days);
                }
                value = config.json ? JSON.stringify(value) : String(value);
                return (document.cookie = [
                    encodeURIComponent(key), '=', config.raw ? value : encodeURIComponent(value),
                    options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
                    options.path    ? '; path=' + options.path : '',
                    options.domain  ? '; domain=' + options.domain : '',
                    options.secure  ? '; secure' : ''
                ].join(''));
            }

            // read
            var decode = config.raw ? raw : decoded;
            var cookies = document.cookie.split('; ');
            for (var i = 0, parts; (parts = cookies[i] && cookies[i].split('=')); i++) {
                if (decode(parts.shift()) === key) {
                    var cookie = decode(parts.join('='));
                    return config.json ? JSON.parse(cookie) : cookie;
                }
            }
            return null;
        };
        config.defaults = {};
        $.removeCookie = function (key, options) {
            if ($.cookie(key) !== null) {
                $.cookie(key, null, options);
                return true;
            }
            return false;
        };
    })(jQuery, document);
4

3 に答える 3

1

jQuerycookieプラグインを使用しているようです。

Cookieの有効期限の問題に加えて、Cookieのパスを確認して、ドメイン上のすべてのパスで使用できるようにすることもできます。次のコードを書くことでそうすることができます、

$.cookie("cookieCreditDash", "Value", { path: '/' });

がない{path: '/'}場合、Cookieパスは現在のパスレベルのみに制限されます。

于 2012-10-06T06:55:34.993 に答える
1

とは$.cookie? jqueryプラグイン?

document.cookieの代わりに Cookie の設定に使用してみましたか$.cookie

https://developer.mozilla.org/en-US/docs/DOM/document.cookie

于 2012-10-06T06:20:14.763 に答える
1

ドキュメントからわかるようにjquery.cookie.js :expires日数です

if ($.cookie('cookieCreditDash') == null)
{
     $('div').text("no cookie");
     $.cookie("cookieCreditDash", 'test', {expires: 1});
} else{
     var data =  $.cookie("cookieCreditDash");
     $('div').text("with cookie: " + data);        
} 

http://jsfiddle.net/HeGhf/

于 2012-10-06T06:43:01.337 に答える