Javascript jQuery在重置cookie之前不删除它

Javascript jQuery在重置cookie之前不删除它,javascript,jquery,cookies,Javascript,Jquery,Cookies,我正在尝试使用Javascript更新网站的一些cookie。它应该查看现有cookie是否具有特定的值。如果是,请删除cookie并将其替换 相反,它添加新的cookie而不删除原始cookie 这是我的密码 $(document).ready(function(){ if(getCookie('ref') == 'na') { $.cookie('ref', null, { path: '/', expires: -5 }); $.cookie('ref', Base64.e

我正在尝试使用Javascript更新网站的一些cookie。它应该查看现有cookie是否具有特定的值。如果是,请删除cookie并将其替换

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

这是我的密码

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

});
这是我正在使用的cookie库:


我做错了什么?

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

$(document).ready(function() {
  if(getCookie('ref') == 'na') {
      $.cookie('ref', null, { path: '/', expires: -5 });
      $.cookie('ref', Base64.encode(document.referrer), {path: '/', expires: 365 });
  }
});
但是,如果您只是想覆盖cookie,则不需要删除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 });
  }
 });

我认为路径就是问题所在。当我在PHP中设置cookie时,它会在域名的开头添加一个句点。我想这就是为什么JS没有覆盖它。@liz是的,当你试图覆盖cookie时,像路径这样的域必须是完全匹配的。