我正在使用此插件在我的页面上设置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”。这有什么不对吗?
答案 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');
}