jquery设置cookie问题

时间:2011-11-18 15:47:44

标签: jquery jquery-plugins cookies

我正在使用此插件在我的页面上设置Cookie:https://github.com/carhartl/jquery-cookie

并且在我的文档就绪功能中添加了这个:

 $.cookie('checkCook', '2')

在我的文档就绪功能之后,我正在做一些事情并将cookie设置为null,

$(document).ready(function() {

    //setting the cokie

    if($.cookie('checkCook') == '2'){
        alert($.cookie('checkCook'));
         $.cookie('checkCook', null);
    }

})

但是直到我在每次刷新浏览器时都收到警报“2”。这有什么不对吗?

2 个答案:

答案 0 :(得分:1)

通过将过期时间设置为过去来清除Cookie。

$.cookie('checkCook', null, {expires: new Date(1)})

答案 1 :(得分:1)

如果我理解正确,你可以设置如下:

$(document).ready(function() {
    //setting the cokie
    if($.cookie('checkCook') == '2'){
        alert($.cookie('checkCook'));
        $.cookie('checkCook', null);
    }
});
$.cookie('checkCook', '2');

您所期望的是,您对$.cookie('checkCook', null);的通话会删除Cookie,但每次刷新页面时,只要您致电$.cookie('checkCook', '2');,Cookie就会重置为“2”。

由于$.cookie('checkCook', '2');不在你的doc.ready函数之外,所以只要浏览器命中它就会调用它(请记住,页面是自上而下加载的),doc.ready块被推迟到dom已加载。这意味着$.cookie('checkCook', '2');代码在 doc.ready块之前执行。这就是为什么你总是得到警告,说明值为'2'。在每次刷新页面时,以及在调用alert之前,Cookie都会设置

你可以做的是将cookie设置代码包装在一个函数中并从doc.ready中调用它。这将延迟cookie的设置,直到 执行警报代码为止。

$(document).ready(function() {
    //setting the cokie
    if($.cookie('checkCook') == '2'){
        alert($.cookie('checkCook'));
        $.cookie('checkCook', null);
    }

    setCookie();
});

function setCookie()
{
    $.cookie('checkCook', '2');
}