web-dev-qa-db-fra.com

Créez un cookie si (et seulement si) il n'existe pas déjà

Je veux:

  1. Vérifiez s'il existe un cookie avec le nom de "requête"
  2. Si oui, alors ne faites rien
  3. Si non, créez une "requête" de cookie avec une valeur de 1

Remarque: j'utilise jQuery 1.4.2 et le plugin cookie jQuery .

Quelqu'un a-t-il des suggestions sur la façon de procéder?

22
Sphvn
if($.cookie('query') === null) { 
    $.cookie('query', '1', {expires:7, path:'/'});
}

Alternativement, vous pouvez écrire une fonction wrapper pour cela:

jQuery.lazyCookie = function() {
   if(jQuery.cookie(arguments[0]) !== null) return;
   jQuery.cookie.apply(this, arguments);
};

Il vous suffirait alors d'écrire ceci dans votre code client:

$.lazyCookie('query', '1', {expires:7, path:'/'});
49
Jacob Relkin

ce??

$.cookie('query', '1'); //sets to 1...
$.cookie('query', null); // delete it...
$.cookie('query'); //gets the value....

if ($.cookie('query') == null){ //Check to see if a cookie with name of "query" exists
  $.cookie('query', '1'); //If not create a cookie "query" with a value of 1.
} // If so nothing.

que veux-tu de plus??

6
Reigel

Semblable à la réponse de Jacobs, mais je préfère tester pour indéfini.

if($.cookie('query') == undefined){
    $.cookie('query', 1, { expires: 1 });
}
6
Colin Bacon