2013-08-28 2 views
19

У меня есть два куки в моем JS-файле, и я хочу их удалить.удалить Cookie используя jquery не работает

Я попытался код ниже, но он не работает

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

Я также попытался ниже нулевое печенье, но это тоже не работает.

Спасибо за помощь

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

включили вы печенья плагин? По умолчанию jQuery не имеет методов 'cookie' и' removeCookie'. – kapa

ответ

41

Это может зависеть от того, что путь ваш печенье используется. Если у вас есть инструменты для разработчиков Chrome и проверьте столбец пути в разделе Ресурсы> Куки> Путь.

enter image description here

Вы можете использовать общий / для вашего пути вместо /Home/. Дайте код ниже попробовать.

Чтобы удалить куки с JQuery установите значение NULL:

$.removeCookie('filter', { path: '/' }); 
+0

Я использую определенную страницу, например. Домашняя страница, так что используйте Home в этом –

+0

Вы проверили инструменты для создания хрома? Ресурсы> Печенье> Путь? – Mark

+0

yes check, это также показывает/Home/ –

5

Пробовали ли вы $ .cookie ("имя", NULL);

$.removeCookie('filter', { path: '/' }); 
+1

yes $ .cookie ("name", null); –

+0

попробуйте $ .removeCookie – Ravia

+0

благодарит @Ravia за подсказку ... это работало потрясающе! должны быть отмечены как ответ –

2

То, что работает для меня установка куки обнулить перед его удалением: $.cookie("filter", null); $.removeCookie("filter);

0

У меня была такая же проблема с JQuery версии 1.7.1 и JQuery печенья версии 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, который вы пытаетесь удалить, функция завершится с ошибкой.

Несколько решений:

Upgrade Jquery Cookies. Самая последняя версия даже не делает эту проверку здравомыслия.

или добавить это к вам документ готов

$.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-name', '', { path: '/my/path', expires:-1 });