Chcę używać jQuery do usuwania plików cookie; Próbowałem tego:
$.cookie('name', '', { expires: -1 });
Ale kiedy odświeżam stronę, plik cookie nadal tam jest:
alert('name:' +$.cookie('name'));
Czemu?
Chcę używać jQuery do usuwania plików cookie; Próbowałem tego:
$.cookie('name', '', { expires: -1 });
Ale kiedy odświeżam stronę, plik cookie nadal tam jest:
alert('name:' +$.cookie('name'));
Czemu?
Odpowiedzi:
Aby usunąć plik cookie z JQuery, ustaw wartość na null:
$.cookie("name", null, { path: '/' });
Edycja: Ostatecznym rozwiązaniem było jawne określenie path
właściwości przy każdym dostępie do pliku cookie, ponieważ OP uzyskuje dostęp do pliku cookie z wielu stron w różnych katalogach, a zatem domyślne ścieżki były różne (nie zostało to opisane w pierwotnym pytaniu). Rozwiązanie zostało odkryte w dyskusji poniżej, co wyjaśnia, dlaczego ta odpowiedź została przyjęta - mimo że nie jest poprawna.
W przypadku niektórych wersji pliku cookie jQ powyższe rozwiązanie ustawi plik cookie na ciąg znaków null. W ten sposób nie usuwa pliku cookie. Zamiast tego użyj kodu zgodnie z sugestią poniżej.
$.removeCookie('the_cookie', { path: '/' });
if (value === null) { value = '';options.expires = -1;}
, co znajduje się w funkcji przetwarzania, więc mają wykonywać to samo. (parametry są (name, value, options)
)
path
w opcjach oba polecenia, ponieważ domyślnie jest to ścieżka bieżącej strony. Przetestuj, ustawiając katalog główny swojej domeny we wszystkich miejscach, w których plik cookie jest odczytywany i zapisywany:$.cookie('name', value, {path:'/'})
$.removeCookie('cookie_name')
robi.
Możesz spróbować tego:
$.removeCookie('the_cookie', { path: '/' });
Możesz także usunąć pliki cookie bez korzystania z wtyczki jquery.cookie:
document.cookie = 'NAMEOFYOURCOOKIE' + '=; expires=Thu, 01-Jan-70 00:00:01 GMT;';
jest to problem niezrozumienia plików cookie. Przeglądarki rozpoznają wartości plików cookie nie tylko dla kluczy, ale także porównują ścieżkę opcji i domenę. Dlatego przeglądarki rozpoznają inną wartość, która z plików cookie ma ten klucz „nazwa” z opcją ustawienia serwera (ścieżka = „/”; domena = „moja_domena.com”), a klucz to „nazwa” bez opcji.
Spróbuj tego
$.cookie('_cookieName', null, { path: '/' });
{Ścieżka: „/”} wykona zadanie za Ciebie
U mnie zadziałało tylko wtedy, gdy path
było ustawione tj .:
$.cookie('name', null, {path:'/'})
To co robisz jest poprawne, problem jest gdzie indziej, np. Plik cookie jest w jakiś sposób ponownie ustawiany przy odświeżaniu.