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
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
Antworten:
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 path
Eigenschaft 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: '/' });
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)
)
path
die 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:'/'})
$.removeCookie('cookie_name')
tut.
Sie können dies versuchen:
$.removeCookie('the_cookie', { path: '/' });
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;';
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.
Versuche dies
$.cookie('_cookieName', null, { path: '/' });
Die {path: '/'} erledigen den Job für Sie
Arbeitete nur für mich , wenn path
eingestellt wurde, dh:
$.cookie('name', null, {path:'/'})
Was Sie tun, ist richtig, das Problem liegt woanders, z. B. wird der Cookie beim Aktualisieren irgendwie wieder gesetzt.