2012-07-30 53 views
4

我正在尝试使用Javascript为网站更新一些cookie。它应该看看现有的Cookie是否为特定的值。如果是这样,请删除cookie并将其替换。jQuery在重置它之前不删除cookie

相反,它添加新的cookie而不删除原来的。

这里是我的代码

$(document).ready(function(){ 
if(getCookie('ref') == 'na') { 
    $.cookie('ref', null, { path: '/', expires: -5 }); 
    $.cookie('ref', Base64.encode(document.referrer), { expires: 365 }); 
} 

}); 

下面是我使用的cookie库:https://github.com/carhartl/jquery-cookie

我在做什么错?

回答

2

要删除一个cookie,您必须将其设置为与您想从中删除它完全相同的路径和域。在$.cookie()调用中指定path,并且如果在以前的任何代码中指定domain,则必须在jQuery代码中将域指定为完全匹配。

$(document).ready(function() { 
    if(getCookie('ref') == 'na') { 
     $.cookie('ref', null, { path: '/', expires: -5 }); 
     $.cookie('ref', Base64.encode(document.referrer), {path: '/', expires: 365 }); 
    } 
}); 

然而,没有真正的需要删除cookie,如果你只是打算将其覆盖:

$(document).ready(function() { 
    if(getCookie('ref') == 'na') { 
    // Just write the new cookie over the old one... 
    $.cookie('ref', Base64.encode(document.referrer), {path: '/', expires: 365 }); 
    } 
}); 
+0

我觉得路径的问题。当我在PHP中设置cookie时,它会在域名的开头添加一段时间。我认为这就是JS不覆盖它的原因。 – liz 2012-07-30 21:26:59

+0

@liz是的,当您尝试覆盖cookie时,路径等域必须完全匹配。 – 2012-07-30 21:59:24