2012-02-17 14 views
30

Używam wtyczki do plików cookie jQuery do przechowywania plików cookie, z następującym kodem mogę zapisać plik cookie przez 7 dni, ale zapisuje go tylko dla strony, na której został utworzony. Chcę, aby plik cookie był dostępny dla całej witryny.ścieżka do plików cookie jQuery

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

Próbowałem ustawić ścieżkę, ale nie wydają się działać

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

pełny kod: to działa dobrze, ale to tylko oszczędza cookie dla bieżącej strony

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

Co jest 'basket'? Jeśli jest to obiekt, musisz najpierw uruchomić go przez 'JSON.stringify()', abyś mógł zapisać ciąg znaków. – Interrobang

+0

koszyk jest ciągiem znaków – waterschaats

+0

@waterschaats można umieścić więcej skryptów – mgraph

Odpowiedz

46

Po prostu miałem ten sam problem. Naprawiłem go przez zawsze określając ścieżkę podczas pisania pliku cookie.

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

Jest to problem związany z wtyczką JQuery. Domyślnie będzie to ścieżka bieżącej strony.

+9

Kiedy próbowałem tej metody, to faktycznie ustawiłem plik cookie (w twoim przypadku "koszyk") na obiekt z właściwością ścieżki zamiast pobierania pliku cookie. –

+2

To służy do USTAWIENIA pliku cookie do podanej ścieżki, a nie pobierania. –

+1

To jest NIEPRAWIDŁOWE. Tworzy plik cookie z wartością drugiego parametru. – lawrencealan

1

miałem ten sam problem, ale uważam, że to nastąpi tylko wtedy, gdy minify się jquery.cookie.js i kiedy kładę w

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

ustawia ścieżkę cookie „/”, cokolwiek wewnętrzna strona jest załadowany, np , yourdomain.com/en/page1/page - ścieżka cookie = '/'

0

Nie sądzę, że łatanie ciała wtyczki to niezły pomysł. Niestety plugin nie jest konfigurowalny .. Używam funkcji 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); 
} 

Zastosowanie:

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

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