jquery, Cookies löschen


90

Ich möchte JQuery verwenden, um Cookies zu löschen. Ich habe es versucht

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

Dann aktualisiere ich die Seite und der Cookie ist noch da:

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

Warum? Vielen Dank


Einige Browser löschen das Cookie erst, nachdem der Browser neu gestartet wurde.
ZOLDIK

Antworten:


143

Um ein Cookie mit JQuery zu löschen, setzen Sie den Wert auf null:

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

Bearbeiten: Die endgültige Lösung bestand darin, die pathEigenschaft beim Zugriff auf das Cookie explizit anzugeben , da das OP von mehreren Seiten in verschiedenen Verzeichnissen auf das Cookie zugreift und daher die Standardpfade unterschiedlich waren (dies wurde in der ursprünglichen Frage nicht beschrieben). Die Lösung wurde in der folgenden Diskussion entdeckt, was erklärt, warum diese Antwort akzeptiert wurde - obwohl sie nicht korrekt war.

Bei einigen Versionen von jQ-Cookies setzt die obige Lösung das Cookie auf den String null. So wird der Cookie nicht entfernt. Verwenden Sie stattdessen den unten vorgeschlagenen Code.

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

Aber aus der Quelle hier: plugins.jquery.com/files/jquery.cookie.js.txt : if (value === null) { value = '';options.expires = -1;}, das, was in der Verarbeitungsfunktion enthalten ist, also sollen sie dasselbe ausführen. (Parameter sind (name, value, options))
Aularon

9
Befinden sich der Cookie-Einstellungscode und der Testcode auf derselben Seite? Wenn nicht, müssen Sie pathdie Optionen in den Optionen explizit auf beide Befehle festlegen , da standardmäßig der Pfad der aktuellen Seite verwendet wird. Testen Sie, indem Sie das Stammverzeichnis Ihrer Domain an allen Stellen festlegen, an denen der Cookie gelesen und geschrieben wird:$.cookie('name', value, {path:'/'})
Chadwick

1
Chadwick> Vielleicht hast du recht. Zum Beispiel Ich setze Cookies auf site.com und gehe dann auf site.com/user, site.com/user/mod, site.com/user/mod/new und möchte Cookies auf dieser ganzen Seite sehen. Wie muss ein Pfad aussehen, wie folgt: {Pfad: '/'}?
user319854

2
Dieser Code entfernt das Cookie nicht, setzt jedoch den Wert null.
Tomzan

12
-1, da dadurch das Cookie nicht entfernt wird. $.removeCookie('cookie_name')tut.
Rosdi Kasim

71

Sie können dies versuchen:

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

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


Yah .. Ich bin damit
einverstanden

Wenn Sie eine Subdomain verwenden, müssen Sie diese möglicherweise auch angeben. Vor allem, weil der Zeitraum am Anfang des Domainnamens erforderlich sein kann (.www.example.com)
Alexis Wilke

Beachten Sie, dass dies bei uns nicht funktioniert hat, wenn der Code aus irgendeinem Grund in eine andere Funktion wechseln musste. $ .cookie ('name', null) wie oben scheint zuverlässiger zu sein. Dieses Cookie zum Entfernen kann jedoch bei einigen Personen funktionieren.
Ligemer

Das ist eigentlich die wahre Antwort!
Kalaschni

15

Sie können Cookies auch löschen, ohne das Plugin jquery.cookie zu verwenden:

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

4

Es ist das Problem des Missverständnisses von Cookies. Browser erkennen Cookie-Werte nicht nur für Schlüssel, sondern vergleichen auch den Optionspfad und die Domäne. Browser erkennen also unterschiedliche Werte, welche Cookies diesen Schlüssel als 'Name' mit der Servereinstellungsoption (Pfad = '/'; Domäne = 'mydomain.com') und als Schlüssel 'Name' ohne Option bezeichnen.


1

Versuche dies

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

Die {path: '/'} erledigen den Job für Sie


1

Arbeitete nur für mich , wenn patheingestellt wurde, dh:

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

Downvoting, weil Sie meine Antwort kopieren und als Ihre
einfügen

1
@OttoKanellis so schlage ich auch die akzeptierte Antwort auf downwote (weil es nach meiner Antwort bearbeitet wurde) und Ihre Antwort zu downvote (Ursache Sie nicht Bedeutung der markierten haben Pfadparameter)!
Andron

-3

Was Sie tun, ist richtig, das Problem liegt woanders, z. B. wird der Cookie beim Aktualisieren irgendwie wieder gesetzt.


4
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert.
Uri Agassi

Für genau diese Antwort sage ich, dass OP es richtig macht. Das Kopieren und Einfügen des OP-Codes ist redundant, und das Hinzufügen eines weiteren Codes ist für den Leser verwirrend. Man kann nach oben scrollen und sehen, was das OP tat, es ist der "wesentliche Teil" hier. Wenn Sie jedoch der Meinung sind, dass es besser ist, etwas aufzunehmen (anscheinend tun es einige Leute ... Einer von ihnen hat sogar meine Antwort abgelehnt :)), bearbeiten Sie einfach die Antwort und korrigieren Sie sie entsprechend. Grüße
aularon

Das Problem mit Links ist, dass sie dazu neigen, zu "verrotten" - sie ändern sich, sie bewegen sich, sie verschwinden (Beispiel: Ihr Link ist bereits tot!). Aus diesem Grund bevorzugen wir, dass Sie den relevanten Text aus dem Link zusammen mit diesem zitieren, damit Ihre Antwort in sich geschlossen ist (siehe auch meta.stackexchange.com/questions/8231/… )
Uri Agassi

Ich bin mir dessen durchaus bewusst, aber auch dies ist hier nicht der Fall. Die gesamte Antwort oben kann wie folgt umgeschrieben werden: "Was Sie tun, ist richtig, das Problem liegt woanders, z. B. wird der Cookie beim Aktualisieren irgendwie wieder gesetzt." Link Rot ist also wieder ein Problem, einschließlich der Antwort selbst neben dem Link ist der richtige Weg. Es ist nur irrelevant für diese Antwort.
Aularon

Wenn also eine Antwort immer wieder einen Link enthält und dieser Link tot ist, heißt das nicht, dass die Antwort nicht gut genug ist. Einige Links dienen nur dazu, zusätzliche Details bereitzustellen, sind jedoch für die Vollständigkeit der Antwort nicht erforderlich. Dieses Verhalten scheint mir ein schlecht programmierter Bot zu sein, der nicht über das grundlegende NLP verfügt, um zu verstehen, in welchem ​​Kontext der Link enthalten ist. Sie sollten wahrscheinlich damit aufhören.
Aularon
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.