2010-09-08 10 views
73

Deseo utilizar JQuery para eliminar las cookies; He intentado estojquery, eliminar cookies

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

Luego actualice la página y la cookie sigue ahí:

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

¿Por qué? Gracias

Respuesta

116

Para eliminar una cookie con jQuery, establezca el valor nulo:

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

Editar: La solución final fue para especificar explícitamente la propiedad path cada vez que acceda la cookie, debido a que la OP accede a la cookie desde varias páginas en directorios diferentes, y por lo tanto las rutas predeterminadas eran diferentes (esto no se describió en la pregunta original). La solución se descubrió en la discusión a continuación, que explica por qué se aceptó esta respuesta, a pesar de no ser correcta.

Para algunas versiones de la cookie jQ, la solución anterior configurará la cookie como cadena nula. Por lo tanto, no elimina la cookie. Use el código como se sugiere a continuación en su lugar.

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

Pero a partir de la fuente aquí: http://plugins.jquery.com/files/jquery.cookie.js. txt: 'if (value === null) {value = ''; options.expires = -1;}', eso que entra dentro de la función de procesamiento, por lo que se supone que deben realizar lo mismo. (los parámetros son '(nombre, valor, opciones)') – aularon

+0

Chadwick> gracias por la ayuda, pero no funcionó – user319854

+9

¿Están el código de configuración de las cookies y el código de prueba en la misma página? De lo contrario, deberá establecer explícitamente la 'ruta' en las opciones para ambos comandos, ya que se establece de manera predeterminada en la ruta de la página actual. Pruebe estableciendo en la raíz de su dominio en todos los lugares donde se lee y escribe la cookie: '$ .cookie ('nombre', valor, {ruta: '/'})' – Chadwick

-1

Lo que está haciendo es correcto, el problema está en otro lugar, p. la cookie se establece de nuevo de alguna manera en la actualización.

+3

Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. –

+0

Por esta misma respuesta, lo que estoy diciendo es que OP lo hace de la manera correcta. Copiar y pegar el código OP será redundante, y agregar otro código será confuso para el lector. Uno puede desplazarse hacia arriba y ver lo que estaba haciendo el OP, es la "parte esencial" aquí. Sin embargo, si sientes que será mejor incluir algo (aparentemente algunas personas lo hacen ... Uno de ellos incluso votó negativamente mi respuesta :)), simplemente edita la respuesta y corrígela en consecuencia. Saludos – aularon

+0

El problema con los enlaces es que tienden a "pudrirse" - cambian, se mueven, desaparecen (caso en particular, ¡su enlace ya está muerto!). Es por eso que preferimos que citas el texto relevante del enlace junto con él, por lo que tu respuesta será independiente (ver también http://meta.stackexchange.com/questions/8231/are-answers-that-just- contain-links-elsewhere-really-good-answers) –

5

es el problema de entender mal la cookie. Los navegadores reconocen los valores de las cookies no solo para las claves sino que también comparan el camino de las opciones &. Así que los navegadores reconocen el valor diferente que la cookie valora esa clave es "nombre" con la opción de configuración del servidor (ruta = '/'; dominio = 'midominio.com') y la clave es 'nombre' sin opción.

2

Prueba este

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

El {ruta: '/'} hacer el trabajo para usted

11

También puede eliminar las cookies sin utilizar jquery.cookie plugin:

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

Usted intente esto:

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

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

+0

Yah ... Estoy bien con eso – Cataclysm

+0

Cuando usa un subdominio también puede tener que especificarlo. Especialmente porque puede ser necesario el período al comienzo del nombre de dominio (.www.ejemplo.com) –

+0

Nota, esto no funcionó para nosotros, donde el código tenía que pasar a otra función por cualquier razón. $ .cookie ('name', null) como el anterior parece ser más confiable. Sin embargo, esta cookie eliminada puede funcionar para algunas personas. – Ligemer

0

trabajado para mí solamente cuandopath se estableció, es decir:

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

Caída negativa porque copia y pega mi respuesta como suya –

+1

@OttoKanellis, por lo que sugiero que se reduzca también la respuesta aceptada (porque fue editada después de mi respuesta) y menospreciar su respuesta (porque no ha resaltado la importancia del ** camino ** parámetro)! – Andron

+0

@ Andron, di la respuesta correcta, es tan simple –

Cuestiones relacionadas