JQuery peut-il lire / écrire des cookies dans un navigateur?

99

Exemple simple: je veux avoir des éléments sur une page (comme des divs ou des lignes de tableau), et je veux laisser l'utilisateur cliquer dessus pour les sélectionner. Cela semble assez simple dans jQuery. Pour enregistrer les éléments sur lesquels un utilisateur clique sans aucun retour de publication côté serveur, je pensais qu'un cookie serait un moyen simple de le faire.

  1. Cette hypothèse est-elle correcte dans ce cas, un cookie est-il correct?
  2. Si c'est correct, l'API jQuery a-t-elle un moyen de lire / écrire des informations sur les cookies qui est plus agréable que les API JavaScript par défaut?
casademora
la source

Réponses:

52

L '"API" JavaScript par défaut pour définir un cookie est aussi simple que:

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

Utilisez le plugin de cookie jQuery comme:

$.cookie('mycookie', 'valueOfCookie')
Adam
la source
14
Oui, écrire des cookies est facile, mais les lire est un peu pénible, car vous devez séparer des chaînes et des trucs. Si vous utilisez déjà JQuery, alors le plugin cookie pourrait être sympa ...... Une chose ennuyeuse à propos de la lecture des cookies est que certains navigateurs suppriment le point-virgule final et d'autres pas .... agréable d'avoir quelqu'un d'autre gérer tout ça.
Peter Ajtai
8
Oh, et le plugin de cookie JQuery ne contient que 40 lignes de JS ... et vous pouvez le modifier à votre guise, afin que vous n'ayez pas l'impression d'entrer dans la zone de danger d'abstraction.
Peter Ajtai
3
Non lié à jQuery comme demandé. Le commentaire de Peter Ajtai montre pourquoi casademora demande le plugin jQuery au lieu de Javascript.
CallMeLaNN
4
Voici le lien à jour pour les personnes qui se retrouvent sur des liens morts ou sur le site plugins.jquery.com défectueux: github.com/carhartl/jquery-cookie
Wiebe Tijsma
18

Vous aurez besoin du plugin cookie, qui fournit plusieurs signatures supplémentaires à la fonction cookie.

$.cookie('cookie_name', 'cookie_value')stocke un cookie transitoire (n'existe que dans le cadre de cette session, tout en $.cookie('cookie_name', 'cookie_value', 'cookie_expiration")créant un cookie qui durera à travers les sessions - voir http://www.stilbuero.de/2006/09/17/cookie-plugin-for-jquery/ pour plus d'informations sur le plugin de cookie JQuery.

Si vous souhaitez définir des cookies qui sont utilisés pour l'ensemble du site, vous devrez utiliser JavaScript comme ceci:

document.cookie = "name=value; expires=date; domain=domain; path=path; secure"
Steve Moyer
la source
1
semble que ce lien est mort au moment d'écrire ces lignes
Mark Schultheiss
11

Un nouveau plugin jQuery pour la récupération et la manipulation des cookies avec liaison pour les formulaires, etc.: http://plugins.jquery.com/project/cookies


la source
3
Pour toute personne qui lit le lien trop rapidement, notez le 's' à la fin du cookie pour en faire une réponse différente de celle d'Alex Fort
Patrick
2
Voici un meilleur lien au moment de la rédaction de cet
Wiebe Tijsma
1
@Zidad qui n'est pas le même plugin que celui lié par Giver Of Cookies. Celui qu'il a lié est maintenant à code.google.com/p/cookies
JAAulde
@JAAulde Ah je ne m'en suis pas rendu compte. Parce que le lien était mort :) Merci!
Wiebe Tijsma
7

pour répondre à ta question, oui. L'autre a répondu à cette partie, mais il semble également que vous vous demandez si c'est la meilleure façon de le faire.

Cela dépendrait probablement de ce que vous faites. En règle générale, un utilisateur clique sur les articles qu'il souhaite acheter (commande par exemple). Ensuite, ils cliquaient sur un bouton d'achat ou de paiement. Ensuite, le formulaire serait envoyé sur une page et traiterait le résultat. Vous pourriez faire tout cela avec un cookie, mais je trouverais cela plus difficile.

Vous voudrez peut-être envisager de publier votre deuxième question dans un autre sujet.

SeanDowney
la source
4

Vous pouvez parcourir tous les plugins jQuery marqués avec "cookie" ici:

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

Beaucoup d'options là-bas.

Découvrez celui appelé jQuery Storage, qui tire parti du localStorage de HTML5. Si localStorage n'est pas disponible, il utilise par défaut les cookies. Cependant, cela ne vous permet pas de définir l'expiration.

Marshall Æon
la source
4

Il semble que le plugin de cookie jQuery ne soit pas disponible au téléchargement. Cependant, vous pouvez télécharger le même plugin de cookie jQuery avec quelques améliorations décrites dans jQuery & Cookies (get / set / delete & un plugin) .

jQuery Lover
la source
Je me rends également compte que le développement du plugin cookie s'est arrêté là depuis la première version et je ne sais pas s'il est compatible avec jQuery 1.4 *
CallMeLaNN
Le plugin est compatible avec jQuery 1.4, puisque la syntaxe d'extension n'a pas changé depuis lors ...
jQuery Lover
2

J'ai réussi à écrire un script permettant à l'utilisateur de choisir sa langue, en utilisant le script cookie de Klaus Hartl . Cela m'a pris quelques heures de travail et j'espère pouvoir aider les autres.

Porta Shqipe
la source