2010-09-08 12 views
73

Chcę używać JQuery do usuwania plików cookie; Próbowałem tojquery, usuń pliki cookie

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

Potem odświeżyć stronę i ciasteczko jest nadal istnieje:

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

Dlaczego? Dzięki

Odpowiedz

116

Aby usunąć pliki cookie z jQuery, należy ustawić wartość null:

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

Edit: Ostateczne rozwiązanie było jednoznacznie określić właściwość ilekroć dostępem cookie path, bo OP dostęp cookie z wielu stron w różnych katalogach, a więc domyślne ścieżki były różne (nie było to opisane w pierwotnym pytaniu). Rozwiązanie zostało odkryte w poniższej dyskusji, co wyjaśnia, dlaczego ta odpowiedź została przyjęta - mimo że nie jest poprawna.

Dla niektórych wersji jQ cookie powyższe rozwiązanie ustawi plik cookie na ciąg znaków null. W ten sposób nie usuwając pliku cookie. Zamiast tego użyj kodu sugerowanego poniżej.

+0

Ale od źródła tutaj: http://plugins.jquery.com/files/jquery.cookie.js. txt: 'if (value === null) {value = ''; options.expires = -1;}', to co znajduje się wewnątrz funkcji przetwarzania, więc mają one wykonywać to samo. (parametrami są '(nazwa, wartość, opcje)') – aularon

+0

Chadwick> dzięki za pomoc, ale to nie zadziałało – user319854

+9

Czy kod ustawień cookie i kod testowy znajdują się na tej samej stronie? Jeśli nie, musisz jawnie ustawić "ścieżkę" w opcjach dla obu poleceń, ponieważ domyślnie jest to ścieżka do bieżącej strony. Przetestuj, ustawiając katalog główny swojej domeny, zarówno we wszystkich miejscach, w których plik cookie jest odczytywany i zapisywany: '$ .cookie ('name', value, {path: '/'})' – Chadwick

-1

To, co robisz, jest poprawne, problem występuje gdzie indziej, np. plik cookie jest ponownie ustawiony w jakiś sposób podczas odświeżania.

+3

Podczas gdy ten link może odpowiedzieć na pytanie, lepiej umieścić tutaj istotne części odpowiedzi i podać link do odsyłacza. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni. –

+0

Dla tej odpowiedzi, co mówię, jest to, że OP robi to we właściwy sposób. Kopiowanie-wklejanie kodu OP będzie zbędne, a dodanie kolejnego kodu będzie mylące dla czytelnika. Można przewijać i zobaczyć, co robi OP, jest to "istotna część" tutaj. Jeśli jednak uważasz, że lepiej będzie coś dodać (podobno niektórzy ludzie, zrób to ... Jeden z nich nawet nie głosował na moją odpowiedź :)), po prostu edytuj odpowiedź i napraw to. Pozdrawiam – aularon

+0

Problem z linkami polega na tym, że mają skłonność do "zgnilizny" - zmieniają się, poruszają się, znikają (tak na wszelki wypadek - twój link jest już martwy!). Dlatego wolimy cytować odpowiedni tekst z linku wraz z nim, więc twoja odpowiedź będzie samodzielna (zobacz także http://meta.stackexchange.com/questions/8231/are-answers-that-just- zawierają-linki-gdzie indziej-naprawdę-dobre-odpowiedzi) –

5

jest to problem niezrozumienia ciasteczka. Przeglądarki rozpoznają wartości plików cookie, a nie tylko klucze, a także porównują ścieżkę opcji domeny &. Dlatego przeglądarki rozpoznają inną wartość, jaką są wartości cookie, którym jest "nazwa" z opcją ustawienia serwera (ścieżka = "/"; domena = "moja_domena.com"), a klucz to "nazwa" bez opcji.

2

Spróbuj

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

przycisk {ścieżkę: '/'} zrobić dla ciebie zadanie

11

Można również usunąć ciasteczka bez użycia jquery.cookie wtyczki:

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

ty można spróbować:

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

s ródło: https://github.com/carhartl/jquery-cookie#readme

+0

Yah .. Mam się dobrze z tym – Cataclysm

+0

Podczas korzystania z subdomeny, możesz również określić ją. Zwłaszcza, że ​​może być wymagany okres na początku nazwy domeny (.www.example.com). –

+0

Uwaga, to nie działało dla nas, gdy kod wymagał przejścia do innej funkcji z dowolnego powodu. $ .cookie ('name', null) jak wyżej wydaje się być bardziej niezawodny. Ten plik cookie usuwania może jednak działać dla niektórych osób. – Ligemer

0

pracował dla mnie tylko gdy path ustalono, tj:

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

Downvoting powoduje, że kopiujesz i wklejasz moją odpowiedź jako swoją –

+1

@OttoKanellis, więc sugeruję też przemycenie zaakceptowanej odpowiedzi (ponieważ była ona edytowana po mojej odpowiedzi) i pomijam również twoją odpowiedź (ponieważ nie podkreśliłeś wagi ** ścieżki ** parametr)! – Andron

+0

@ Andron, Podałem właściwą odpowiedź, to takie proste –

Powiązane problemy