web-dev-qa-db-fra.com

chemin des cookies jQuery

J'utilise le plugin jQuery cookie pour stocker les cookies. Avec le code suivant, je peux enregistrer un cookie pendant 7 jours, mais uniquement pour la page sur laquelle il a été créé. Je souhaite que le cookie soit disponible pour l'ensemble du site.

$.cookie('basket',basket,{ expires: 7 });

J'ai essayé de tracer une voie, mais cela n'a pas semblé fonctionner

$.cookie('basket',basket,{ expires: 7, path:'/' });

code complet: cela fonctionne bien, mais il n'enregistre que le cookie pour la page en cours

function add_to_basket(id,title){
if($.cookie('basket')){
    basket=$.cookie('basket');

    var basket_array = basket.split(',');

    var index = jQuery.inArray(id,basket_array);
    if(index > -1){
        return false;
    }else{
        basket+=','+id;
        $.cookie('basket',basket,{ expires: 7 });
    }
}else{

    basket=id;
    console.log(basket);
    $.cookie('basket',basket,{ expires: 7 });

}
30
waterschaats

Je viens d'avoir le même problème. Je l'ai corrigé en toujours en spécifiant le chemin lors de l'écriture du cookie.

$.cookie('basket', value, { path: '/' })

Ceci est un problème avec le plugin jquery cookie. Il utilisera par défaut le chemin de la page en cours.

48
Tim Santeford

Dans le changement de fichier du plugin:

config.defaults = {};

à

config.defaults = {path:'/'};

de https://github.com/carhartl/jquery-cookie/issues/2#issuecomment-790288

13
bitlove

J'ai eu le même problème mais j'ai constaté que cela ne se produit que lorsque je réduis le jquery.cookie.js et que je le mets en

config.defaults = {expires: 180, path:'/', domain: '.domain.com' };

il définit le chemin du cookie sur '/', quelle que soit la page interne chargée, par exemple, yourdomain.com/en/page1/page - chemin du cookie = '/'

1

Je ne pense pas que le patch du corps du plugin soit une bonne idée. Malheureusement, le plugin n'est pas configurable. J'utilise la fonction wrapper:

$.cookie2 = function(key, value, options)
{
    if (typeof value!='undefined')
    { // setting cookie
        var defaults = {expires: 180, path:'/'};
        $.extend(defaults, options || {});
        return $.cookie(key, value, defaults);
    }
    // getting cookie
    return $.cookie(key, value, options);
}

Usage:

// set with defaults defined in wrapper
$.cookie2('name', 'value');

// rewrite defaults or add something
$.cookie2('name', 'value', {expires: 1, something: 'else'}); 
0
zzmaster