jquery, elimina i cookie


90

Voglio usare JQuery per eliminare i cookie; Ho provato questo

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

Quindi aggiorno la pagina e il cookie è ancora lì:

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

Perché? Grazie


alcuni browser cancelleranno il cookie solo dopo il riavvio del browser.
ZOLDIK

Risposte:


145

Per eliminare un cookie con JQuery, imposta il valore su null:

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

Modifica: la soluzione finale era specificare esplicitamente il filepath proprietà ogni volta che si accede al cookie, poiché l'OP accede al cookie da più pagine in directory diverse, e quindi i percorsi predefiniti erano diversi (questo non era descritto nella domanda originale). La soluzione è stata scoperta nella discussione di seguito, il che spiega perché questa risposta è stata accettata, nonostante non fosse corretta.

Per alcune versioni jQ cookie, la soluzione sopra imposta il cookie sulla stringa nulla. Quindi non rimuovere il cookie. Utilizza invece il codice come suggerito di seguito.

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

Ma dalla sorgente qui: plugins.jquery.com/files/jquery.cookie.js.txt : if (value === null) { value = '';options.expires = -1;}, che ciò che va dentro la funzione di elaborazione, in modo che si suppone di eseguire la stessa. (i parametri sono (name, value, options))
aularon

9
Il codice di impostazione del cookie e il codice di test sono sulla stessa pagina? In caso contrario, sarà necessario impostare esplicitamente pathle opzioni nelle opzioni di entrambi i comandi, poiché il valore predefinito è il percorso della pagina corrente. Prova impostando come root del tuo dominio entrambi in tutti i punti in cui il cookie viene letto e scritto:$.cookie('name', value, {path:'/'})
Chadwick

1
Chadwick> Forse hai ragione. Per exm. ho impostato i cookie in site.com, poi vado in site.com/user, site.com/user/mod, site.com/user/mod/new e desidero vedere i cookie in tutta questa pagina. Come deve apparire il percorso, in questo modo: {percorso: '/'}?
user319854

2
Questo codice non rimuove il cookie, ma imposta null nel suo valore.
Tomzan

12
-1 perché questo non rimuove effettivamente il cookie. $.removeCookie('cookie_name')fa.
Rosdi Kasim

71

Puoi provare questo:

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

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


Yah .. Sto bene con quello
Cataclysm

Quando si utilizza un sottodominio, potrebbe essere necessario specificarlo. Soprattutto perché potrebbe essere richiesto il periodo all'inizio del nome di dominio (.www.example.com)
Alexis Wilke

Nota, questo non ha funzionato per noi dove il codice doveva entrare in un'altra funzione per qualsiasi motivo. $ .cookie ('name', null) come sopra sembra essere più affidabile. Tuttavia, questa rimozione dei cookie potrebbe funzionare per alcune persone.
Ligemer

Questa è in realtà la vera risposta!
Kalaschni

15

Puoi anche eliminare i cookie senza utilizzare il plugin jquery.cookie:

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

4

è il problema dell'incomprensione dei cookie. I browser riconoscono i valori dei cookie non solo per le chiavi, ma confrontano anche il percorso e il dominio delle opzioni. Quindi i browser riconoscono un valore diverso il cui valore del cookie è "nome" con l'opzione di impostazione del server (percorso = "/"; dominio = "miodominio.com") e la chiave è "nome" senza alcuna opzione.


1

Prova questo

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

Il {percorso: '/'} fa il lavoro per te


1

Ha funzionato per me solo quando è pathstato impostato, ovvero:

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

Downvoting perché copi e incolli la mia risposta come tua
Otto Kanellis

1
@OttoKanellis quindi suggerisco di svalutare anche la risposta accettata (perché è stata modificata dopo la mia risposta) e anche di svalutare la tua risposta (perché non hai evidenziato l'importanza del parametro del percorso )!
Andron

-3

Quello che stai facendo è corretto, il problema è altrove, ad es. Il cookie viene impostato di nuovo in qualche modo all'aggiornamento.


4
Sebbene questo collegamento possa rispondere alla domanda, è meglio includere le parti essenziali della risposta qui e fornire il collegamento come riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia.
Uri Agassi

Proprio per questa risposta, quello che sto dicendo è che OP lo sta facendo nel modo giusto. Il copia-incolla del codice OP sarà ridondante e l'aggiunta di un altro codice creerà confusione per il lettore. Si può scorrere verso l'alto e vedere cosa stava facendo l'OP, è la "parte essenziale" qui. Tuttavia, se ritieni che sia meglio includere qualcosa (a quanto pare alcune persone, lo fanno ... Uno di loro ha addirittura scartato la mia risposta :)), modifica la risposta e aggiustala di conseguenza. Saluti
aularon

Il problema con i collegamenti è che tendono a "marcire": cambiano, si spostano, scompaiono (per esempio, il tuo collegamento è già morto!). Questo è il motivo per cui preferiamo che citi il ​​testo pertinente dal link insieme ad esso, quindi la tua risposta sarà autonoma (vedi anche meta.stackexchange.com/questions/8231/… )
Uri Agassi

Ne sono ben consapevole, ma ancora: non è questo il caso qui. L'intera risposta sopra può essere riscritta come "Quello che stai facendo è corretto, il problema è altrove, ad esempio il cookie viene impostato di nuovo in qualche modo all'aggiornamento". Quindi, ancora una volta, il link rot è un problema, inclusa la risposta stessa accanto al link è la strada da percorrere. È semplicemente irrilevante per questa risposta.
aularon

Quindi ancora e ancora, se una risposta contiene un collegamento e quel collegamento è morto, non significa che la risposta non sia abbastanza buona. Alcuni link servono solo per fornire ulteriori dettagli, ma non sono necessari per la completezza della risposta. Questo comportamento mi sembra come un bot mal programmato che non ha la PNL di base per capire il collegamento di contesto è dato. Probabilmente dovresti smettere di farlo.
aularon
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.