¿Puede jQuery leer / escribir cookies en un navegador?

99

Ejemplo simple: quiero tener algunos elementos en una página (como divs o filas de tabla) y quiero permitir que el usuario haga clic en ellos para seleccionarlos. Eso parece bastante fácil en jQuery. Para guardar los elementos en los que un usuario hace clic sin copias de seguridad del lado del servidor, estaba pensando que una cookie sería una forma sencilla de hacer esto.

  1. ¿Es correcta esta suposición de que una cookie está bien en este caso?
  2. Si es correcto, ¿la API de jQuery tiene alguna forma de leer / escribir información de cookies que sea más agradable que las API de JavaScript predeterminadas?
casademora
fuente

Respuestas:

52

La "API" de JavaScript predeterminada para configurar una cookie es tan fácil como:

document.cookie = 'mycookie=valueOfCookie;expires=DateHere;path=/'

Utilice el complemento de cookies jQuery como:

$.cookie('mycookie', 'valueOfCookie')
Adán
fuente
14
Sí, escribir cookies es fácil, pero leerlas es un poco complicado, ya que tienes que dividir los hilos y esas cosas. Si ya está usando JQuery, entonces el complemento de cookies podría ser bueno ... Una cosa molesta sobre la lectura de cookies es que algunos navegadores eliminan el punto y coma final y otros no ... es bueno que alguien más se encargue todo lo que.
Peter Ajtai
8
Ah, y el complemento de cookies de JQuery tiene solo 40 líneas de JS ... y puede editarlo a su gusto, para que no sienta que está entrando en la zona de peligro de abstracción.
Peter Ajtai
3
No relacionado con jQuery como se le preguntó. El comentario de Peter Ajtai muestra por qué casademora solicita el complemento jQuery en lugar de Javascript.
CallMeLaNN
4
Aquí está el enlace actualizado para las personas que terminan en enlaces muertos o plugins que
Wiebe Tijsma
18

Necesitará el complemento de cookies, que proporciona varias firmas adicionales para la función de cookies.

$.cookie('cookie_name', 'cookie_value')almacena una cookie transitoria (solo existe dentro del alcance de esta sesión, mientras que $.cookie('cookie_name', 'cookie_value', 'cookie_expiration")crea una cookie que durará en todas las sesiones; consulte http://www.stilbuero.de/2006/09/17/cookie-plugin-for-jquery/ para obtener más información en el complemento de cookies de JQuery.

Si desea configurar cookies que se utilicen para todo el sitio, deberá usar JavaScript de esta manera:

document.cookie = "name=value; expires=date; domain=domain; path=path; secure"
Steve Moyer
fuente
1
parece que este enlace está muerto al momento de escribir este artículo
Mark Schultheiss
11

Un nuevo complemento de jQuery para la recuperación y manipulación de cookies con enlace para formularios, etc.: http://plugins.jquery.com/project/cookies


fuente
3
Para cualquiera que lea el enlace demasiado rápido, observe la 's' al final de la cookie para que esta sea una respuesta diferente a la de Alex Fort
Patrick
2
Aquí hay un enlace mejor al momento de escribir github.com/carhartl/jquery-cookie
Wiebe Tijsma
1
@Zidad que no es el mismo complemento que el vinculado por Giver Of Cookies. El que vinculó está ahora en code.google.com/p/cookies
JAAulde
@JAAulde Ah, no me di cuenta de eso. Porque el enlace estaba muerto :) ¡Gracias!
Wiebe Tijsma
7

Para responder a tu pregunta, si. Los otros han respondido esa parte, pero también parece que estás preguntando si esa es la mejor manera de hacerlo.

Probablemente dependerá de lo que estés haciendo. Normalmente, el usuario hace clic en los artículos que desea comprar (por ejemplo, hacer un pedido). Luego presionarían un botón de compra o pago. Luego, el formulario se enviaría a una página y procesaría el resultado. Podrías hacer todo eso con una cookie, pero a mí me resultaría más difícil.

Es posible que desee considerar publicar su segunda pregunta en otro tema.

SeanDowney
fuente
4

Puede explorar todos los complementos de jQuery etiquetados con "cookie" aquí:

http://plugins.jquery.com/plugin-tags/cookies

Hay muchas opciones.

Echa un vistazo al llamado jQuery Storage, que aprovecha el almacenamiento local de HTML5. Si localStorage no está disponible, utiliza cookies de forma predeterminada. Sin embargo, no le permite establecer la caducidad.

Marshall Æon
fuente
4

Parece que el complemento de cookies de jQuery no está disponible para descargar. Sin embargo, puede descargar el mismo complemento de cookies de jQuery con algunas mejoras descritas en jQuery y cookies (obtener / configurar / eliminar y un complemento) .

amante de jQuery
fuente
También me doy cuenta de que el desarrollo del complemento de cookies se detuvo allí desde el primer lanzamiento y no estoy seguro de si es compatible con jQuery 1.4 *
CallMeLaNN
El complemento es compatible con jQuery 1.4, ya que la sintaxis de extensión no ha cambiado desde entonces ...
jQuery Lover
2

He logrado escribir un script que permite al usuario elegir su idioma, utilizando el script de cookies de Klaus Hartl . Me tomó algunas horas trabajar y espero poder ayudar a otros.

Porta Shqipe
fuente