21

我的 JS 文件中有两个 cookie,我想删除它们。

我已经尝试了下面的代码,但它不起作用

 $.removeCookie('filter', { path: '/Home/' });
 $.removeCookie('Pfilter', { path: '/Home/' });

我也尝试了下面的空 cookie,但这也不起作用。

谢谢您的帮助

$.cookie('filter',null, { path: '/Home/' });
4

6 回答 6

48

这可能取决于您的 cookie 使用的路径。如果您转到 chrome 开发人员工具并检查资源 > Cookies > 路径下的路径列。

在此处输入图像描述

您可能正在/为您的路径使用泛型而不是/Home/. 试试下面的代码。

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

$.removeCookie('filter', { path: '/' });
于 2013-08-28T11:11:04.560 回答
7

你试过 $.cookie("name", null);

$.removeCookie('filter', { path: '/' });
于 2013-08-28T11:14:11.650 回答
3

对我有用的是在删除之前将 cookie 设置为 null: $.cookie("filter", null); $.removeCookie("filter);

于 2014-05-28T10:56:05.553 回答
2

我在使用 jquery 1.7.1 版和 jquery cookie 1.4.1 版时遇到了同样的问题

这让我发疯,所以我决定深入研究源代码并找出问题所在。

这是 $.removeCookie 的定义

$.removeCookie = function (key, options) {
    if ($.cookie(key) === undefined) { // this line is the problem
        return false;
    }

    // Must not alter options, thus extending a fresh object...
    $.cookie(key, '', $.extend({}, options, { expires: -1 }));
    return !$.cookie(key);
};

正如您所看到的,当函数检查 cookie 是否存在时,它没有考虑选项对象。因此,如果您在与尝试删除的 cookie 不同的路径上,该功能将失败。

一些解决方案:

升级 Jquery Cookie。最新版本甚至没有进行完整性检查。

或将此添加到您准备好的文档中

$.removeCookie = function (key, options) {
    if ($.cookie(key, options) === undefined) { // this line is the fix
        return false;
    }

    // Must not alter options, thus extending a fresh object...
    $.cookie(key, '', $.extend({}, options, { expires: -1 }));
    return !$.cookie(key);
};

或者在删除 cookie 时执行以下操作:

$.cookie('cookie-name', '', { path: '/my/path', expires:-1 });
于 2015-09-11T19:07:11.583 回答
2

如果您在创建 cookie 时使用域参数,这将起作用

$.removeCookie('cookie', { path: '/' , domain  : 'yourdomain.com'});
于 2019-12-30T13:19:01.770 回答
0

这种简单的方法可以正常工作:

$.cookie("cookieName", "", { expires: -1 });
于 2019-01-22T09:08:46.090 回答