2012-02-17 9 views
30

Utilizo el plugin de cookies jQuery para almacenar cookies, con el siguiente código puedo guardar una Cookie durante 7 días, pero solo la guarda para la página en la que está creada. Quiero que la cookie esté disponible para todo el sitio web.jQuery Cookie path

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

Me trataron de establecer una ruta, pero que no parecen funcionar

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

código completo: esto funciona bien, pero sólo ahorra la cookie de la página actual

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 }); 

} 
+0

Lo que es 'basket'? Si se trata de un objeto, primero debe ejecutar 'JSON.stringify()' para poder almacenar una cadena. – Interrobang

+0

cesta es una cadena – waterschaats

+0

@waterschaats puede poner más secuencia de comandos – mgraph

Respuesta

46

Acabo de tener el mismo problema. Lo arreglé por siempre especificando la ruta al escribir la cookie.

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

Este es un problema con el complemento de cookie jquery. Se establecerá de manera predeterminada en la ruta de la página actual.

+9

Cuando probé este método, realmente configuró la cookie (en su caso 'cesta') a un objeto con una propiedad de ruta en lugar de recuperar la cookie. –

+2

Eso es para CONFIGURAR una cookie en la ruta dada, no recuperarla. –

+1

Esto es INCORRECTO. Crea una cookie con el valor del segundo parámetro. – lawrencealan

1

he tenido el mismo problema, pero me encontré con que esto ocurre sólo cuando Minify la jquery.cookie.js y cuando pongo en

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

se establece la ruta de cookies a '/', cualquiera que sea la página interna se carga, por ejemplo, , yourdomain.com/en/page1/page - cookie path = '/'

0

No creo que el parche del cuerpo del plugin sea una buena idea. Lamentablemente plugin no es configurable .. utilizo función de contenedor:

$.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); 
} 

Uso:

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

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