2010-09-08 2 views
73

Ich möchte mit JQuery Cookies löschen; Ich habe versucht, diesejquery, Cookies löschen

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

Dann aktualisieren ich die Seite und das Cookie ist noch da:

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

Warum? Dank

Antwort

116

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

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

Edit: Die endgültige Lösung wurde explizit die path Eigenschaft angeben, wenn das Cookie zugreifen, da die OP das Cookie greift aus mehreren Seiten in verschiedenen Verzeichnissen, und daher waren die Standardpfade unterschiedlich (dies wurde in der ursprünglichen Frage nicht beschrieben). Die Lösung wurde in der folgenden Diskussion entdeckt, die erklärt, warum diese Antwort akzeptiert wurde - obwohl sie nicht korrekt ist.

Bei einigen Versionen von jQ cookie setzt die obige Lösung den Cookie auf null. So entfernen Sie den Cookie nicht. Verwenden Sie stattdessen den unten angegebenen Code.

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

Aber von der Quelle hier: http://plugins.jquery.com/files/jquery.cookie.js. txt: 'if (value === null) {value = ''; options.expires = -1;}', das, was innerhalb der Verarbeitungsfunktion liegt, also sollen sie das Gleiche tun. (Parameter sind '(Name, Wert, Optionen)') – aularon

+0

Chadwick> Danke für die Hilfe, aber es hat nicht funktioniert – user319854

+9

Ist der Cookie-Einstellungscode und Testcode auf der gleichen Seite? Wenn nicht, müssen Sie den Pfad in den Optionen für beide Befehle explizit festlegen, da er standardmäßig den Pfad der aktuellen Seite angibt. Testen Sie, indem Sie an allen Stellen, an denen der Cookie gelesen und geschrieben wird, auf root Ihrer Domain setzen: '$ .cookie ('name', value, {pfad: '/'})' – Chadwick

-1

Was Sie tun, ist richtig, das Problem ist woanders, z. der Cookie wird beim Refresh irgendwie neu gesetzt.

+3

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

+0

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

+0

Das Problem mit Links ist, dass sie dazu neigen, zu "verrotten" - sie verändern sich, sie bewegen sich, sie verschwinden (zum Beispiel - dein Link ist _ready_ dead!). Deshalb ziehen wir es vor, dass Sie den entsprechenden Text aus dem Link zitieren, damit Ihre Antwort in sich abgeschlossen ist (siehe auch http://meta.stackexchange.com/questions/8231/are-answers- that- just- Contains-Links-woanders-wirklich-gute-Antworten) –

5

ist es das Problem von Missverständnis von Cookie. Browser erkennen Cookie-Werte für nicht nur Schlüssel vergleichen Sie auch die Optionen Pfad & Domäne. So Browser erkennen anderen Wert, die Cookie-Werte, die Schlüssel ist "Name" mit Server-Einstellung Option (Pfad = '/'; Domäne = 'Mydomain.com') und Schlüssel ist 'Name' ohne Option.

2

Versuchen Sie, diese

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

Der {Pfad: '/'} tun, um die Arbeit für Sie

11

Sie Cookies auch ohne jquery.cookie Plugin löschen:

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

Sie kann dies versuchen:

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

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

+0

Yah .. Mir geht es gut mit – Cataclysm

+0

Wenn Sie eine Sub-Domain verwenden, müssen Sie möglicherweise auch angeben. Vor allem, weil der Zeitraum am Anfang des Domain-Namens erforderlich sein kann (.www.example.com). –

+0

Hinweis, dies funktionierte für uns nicht, wo der Code aus irgendeinem Grund in eine andere Funktion gehen musste. $ .cookie ('name', null) wie oben scheint zuverlässiger zu sein. Dieses Cookie kann jedoch für einige Leute funktionieren. – Ligemer

0

für mich gearbeitet nur wenn path gesetzt wurde, das heißt:

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

Downvoting, weil Sie meine Antwort kopieren und einfügen –

+1

@OttoKanellis, also schlage ich vor, die angenommene Antwort auch zu downweween (weil es nach meiner Antwort bearbeitet wurde) und Ihre Antwort auch downvote (weil Sie Bedeutung des ** Pfades nicht hervorgehoben haben) ** Parameter)! – Andron

+0

@ Andron, ich gab die richtige Antwort, es ist so einfach –