jquery, eliminar cookies


90

Quiero usar JQuery para eliminar cookies; Intenté esto

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

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

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

¿Por qué? Gracias


algunos navegadores eliminarán la cookie solo después de reiniciar el navegador.
ZOLDIK

Respuestas:


145

Para eliminar una cookie con JQuery, establezca el valor en nulo:

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

Editar: La solución final fue especificar explícitamente la pathpropiedad cada vez que se accede a la cookie, porque el OP accede a la cookie desde varias páginas en diferentes directorios 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, lo 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 establecerá la cookie en una cadena nula. De esta forma no se quita la cookie. Utilice el código como se sugiere a continuación.

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

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

9
¿El código de configuración de cookies y el código de prueba están en la misma página? De lo contrario, deberá establecer explícitamente pathen las opciones de ambos comandos, ya que el valor predeterminado es la ruta de la página actual. Pruebe estableciendo la raíz de su dominio en todos los lugares donde se lee y escribe la cookie:$.cookie('name', value, {path:'/'})
Chadwick

1
Chadwick> Quizás tengas razón. Por ejemplo. configuro cookies en site.com, luego en site.com/user, site.com/user/mod, site.com/user/mod/new y deseo ver cookies en toda esta página. ¿Cómo debe verse la ruta, así: {ruta: '/'}?
user319854

2
Este código no elimina la cookie, pero establece un valor nulo.
Tomzan

12
-1 porque esto en realidad no elimina la cookie. $.removeCookie('cookie_name')hace.
Rosdi Kasim

71

Puedes probar esto:

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

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


Yah ... Estoy bien con eso
Cataclysm

Cuando utilice un subdominio, es posible que también deba especificarlo. Especialmente porque el punto al principio del nombre de dominio puede ser requerido (.www.example.com)
Alexis Wilke

Tenga en cuenta que esto no funcionó para nosotros cuando el código necesitaba ir a otra función por cualquier motivo. $ .cookie ('nombre', nulo) como arriba parece ser más confiable. Sin embargo, esta cookie de eliminación podría funcionar para algunas personas.
Ligemer

¡Esta es realmente la respuesta real!
Kalaschni

15

También puede eliminar las cookies sin usar el complemento jquery.cookie:

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

4

es el problema del malentendido de las cookies. Los navegadores reconocen los valores de las cookies no solo para las claves, sino que también comparan las opciones, ruta y dominio. Por lo tanto, los navegadores reconocen diferentes valores de cookies, 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.


1

Prueba esto

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

La {ruta: '/'} hace el trabajo por ti


1

Funcionó para mí solo cuando pathse configuró, es decir:

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

Votar en contra porque copia y pega mi respuesta como suya
Otto Kanellis

1
@OttoKanellis, así que sugiero rechazar la respuesta aceptada también (porque fue editada después de mi respuesta) y también rechazar tu respuesta (¡porque no has resaltado la importancia del parámetro de ruta )!
Andron

-3

Lo que está haciendo es correcto, el problema está en otro lugar, por ejemplo, la cookie se está configurando nuevamente de alguna manera al actualizar.


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

Para esta misma respuesta, lo que estoy diciendo es que OP lo está haciendo 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 cree que será mejor incluir algo (aparentemente algunas personas, sí ... Uno de ellos incluso rechazó mi respuesta :)), simplemente edite la respuesta y corríjala en consecuencia. Saludos
aularon

El problema con los enlaces es que tienden a "pudrirse", cambian, se mueven, desaparecen (por ejemplo, ¡tu enlace ya está muerto!). Es por eso que preferimos que cite el texto relevante del enlace junto con él, para que su respuesta sea autónoma (consulte también meta.stackexchange.com/questions/8231/… )
Uri Agassi

Soy muy consciente de eso, pero de nuevo: este no es el caso aquí. Toda la respuesta anterior se puede reescribir como "Lo que está haciendo es correcto, el problema está en otro lugar, por ejemplo, la cookie se está configurando nuevamente de alguna manera al actualizar". Entonces, nuevamente, la rotura del enlace es un problema, incluida la respuesta en sí junto al enlace es el camino a seguir. Es simplemente irrelevante para esta respuesta.
aularon

Entonces, una y otra vez, si una respuesta contiene un enlace y ese enlace está muerto, no significa que la respuesta no sea lo suficientemente buena. Algunos enlaces están ahí para proporcionar detalles adicionales, pero no son necesarios para que la respuesta sea completa. Este comportamiento me parece como un bot mal programado que no tiene la PNL básica para entender el enlace de contexto. Probablemente debería dejar de hacer esto.
aularon
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.