【问题标题】:How to delete a cookie using jQuery?如何使用 jQuery 删除 cookie?
【发布时间】:2011-04-09 22:57:49
【问题描述】:

我想用jQuery来删除cookies;我试过这个:

$.cookie('name', '', { expires: -1 });

但是当我刷新页面时,cookie仍然存在:

alert('name:' +$.cookie('name'));

为什么?

【问题讨论】:

  • 有些浏览器只有在重启浏览器后才会删除cookie。

标签: jquery cookies jquery-cookie


【解决方案1】:

要使用 JQuery 删除 cookie,请将值设置为 null:

$.cookie("name", null, { path: '/' });

编辑:最终的解决方案是在访问cookie时显式指定path属性,因为OP从不同目录的多个页面访问cookie,因此默认路径不同(这在原始问题中没有描述)。该解决方案是在下面的讨论中发现的,这解释了为什么这个答案被接受 - 尽管不正确。

对于某些版本的 jQ cookie,上述解决方案会将 cookie 设置为字符串 null。因此不删除cookie。请改用下面建议的代码。

$.removeCookie('the_cookie', { path: '/' });

【讨论】:

  • 但是从这里的来源:plugins.jquery.com/files/jquery.cookie.js.txtif (value === null) { value = '';options.expires = -1;},处理函数内部的内容,所以它们应该执行相同的操作。 (参数为(name, value, options)
  • cookie设置代码和测试代码在同一个页面吗?如果没有,您需要在两个命令的选项中显式设置path,因为它默认为当前页面的路径。通过在读取和写入 cookie 的所有位置设置为域的根进行测试:$.cookie('name', value, {path:'/'})
  • Chadwick>也许你是对的。对于 exm。我在 site.com 中设置了 cookie,然后进入 site.com/user、site.com/user/mod、site.com/user/mod/new,我希望在所有此页面中看到 cookie。必须怎么看路径,像这样:{path:'/'}?
  • 此代码不会删除cookie,而是将其值设置为null。
  • -1 因为这实际上并没有删除 cookie。 $.removeCookie('cookie_name') 会。
【解决方案2】:

你可以试试这个:

$.removeCookie('the_cookie', { path: '/' });

来源:https://github.com/carhartl/jquery-cookie#readme

【讨论】:

  • 是的..我很好
  • 当您使用子域时,您可能还必须指定它。特别是因为可能需要域名开头的句点(.www.example.com)
  • 注意,这对我们不起作用,无论出于何种原因,代码都需要进入另一个函数。上面的 $.cookie('name', null) 似乎更可靠。但是,此删除 cookie 可能对某些人有用。
  • 这才是真正的答案!
【解决方案3】:

您也可以在不使用 jquery.cookie 插件的情况下删除 cookie:

document.cookie = 'NAMEOFYOURCOOKIE' + '=; expires=Thu, 01-Jan-70 00:00:01 GMT;';

【讨论】:

    【解决方案4】:

    是对cookie的误解的问题。 浏览器不仅可以识别键的 cookie 值,还可以比较选项路径和域。 因此,浏览器可以识别不同的值,哪些 cookie 值该键是带有服务器设置选项的“名称”(path='/'; domain='mydomain.com'),而键是没有选项的“名称”。

    【讨论】:

      【解决方案5】:

      试试这个

       $.cookie('_cookieName', null, { path: '/' });
      

      { path: '/' } 为您完成这项工作

      【讨论】:

        【解决方案6】:

        在设置path 时为我工作,即:

        $.cookie('name', null, {path:'/'})
        

        【讨论】:

        • 投反对票导致您将我的答案复制并粘贴为您的答案
        • @OttoKanellis 所以我建议也将接受的答案记下来(因为它是在我的回答之后编辑的)并且也记下你的答案(因为你没有强调 路径的重要性 参数)!
        【解决方案7】:

        您所做的是正确的,问题出在其他地方,例如cookie 正在以某种方式在刷新时再次设置。

        【讨论】:

        • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
        • 对于这个答案,我想说的是 OP 正在以正确的方式进行操作。复制粘贴 OP 代码将是多余的,添加另一个代码会使读者感到困惑。可以向上滚动并查看 OP 在做什么,这是这里的“基本部分”。但是,如果您觉得包含某些内容会更好(显然有些人,做...其中一个甚至否决了我的答案:)),只需编辑答案并相应地修复它。问候
        • 链接的问题在于它们往往会“腐烂”——它们会改变、移动、消失(例如——你的链接已经失效了!)。这就是为什么我们更喜欢您引用链接中的相关文本,这样您的答案将是独立的(另请参阅meta.stackexchange.com/questions/8231/…
        • 我很清楚这一点,但再说一遍:这里不是这种情况。上面的整个答案可以重写为“您所做的是正确的,问题出在其他地方,例如在刷新时以某种方式再次设置了 cookie”。所以,同样,链接腐烂是一个问题,包括链接旁边的答案本身就是要走的路。这与这个答案无关。
        • 如此反复,如果一个答案包含一个链接,并且该链接已失效,并不意味着答案不够好。一些链接只是为了提供更多详细信息,但对于答案的完整性不是必需的。在我看来,这种行为就像一个编程错误的机器人,它没有基本的 NLP 来理解给出的上下文链接。你应该停止这样做。
        猜你喜欢
        • 2011-01-16
        • 1970-01-01
        • 1970-01-01
        • 2010-12-20
        • 1970-01-01
        • 2016-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多