Cookie始终为空? [英] Cookie always null?

查看:226
本文介绍了Cookie始终为空?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想检查cookie是否存在

I want to check if the cookie is existing or not

问题是如果我检查它,它总是返回null

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,我使用了以下插件:

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


推荐答案

看起来您正在使用 jQuery cookie插件

除了cookie过期问题外,您可能还需要检查cookie路径,使其可用于域中的所有路径。您可以通过编写以下代码来做到这一点,

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: '/' });

没有 {path:'/'} ,Cookie路径将仅限于当前路径级别。

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

这篇关于Cookie始终为空?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆