Cookie always null?

2019-07-20 02:59发布

I want to check if the cookie is existing or not

The problem is it is always returning to null if i check it

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});
 }

WHYYY>??

BTW, I used the following plugin:

(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);

3条回答
叛逆
2楼-- · 2019-07-20 03:10

As I can see from documentation jquery.cookie.js: expires is number of days

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/

查看更多
We Are One
3楼-- · 2019-07-20 03:26

Looks like you are using jQuery cookie plugin.

Besides cookie expiry issues, you might also want to check your cookie path, making it available to all paths on your domain. You can do so by writing following code,

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

Without {path: '/'}, cookie path will be limited to current path level only.

查看更多
Emotional °昔
4楼-- · 2019-07-20 03:31

What is $.cookie? a jquery plugin?

Did you try using document.cookie for setting cookie instead of $.cookie.

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

查看更多
登录 后发表回答