2012-02-17 111 views
30

我使用jQuery cookie插件來存儲cookie,使用以下代碼我可以保存7天的Cookie,但只保存它創建的頁面。我希望cookie可用於整個網站。jQuery Cookie路徑

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

我試圖設置一個路徑,但似乎並沒有工作

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

全碼:這工作得很好,但只保存當前頁面

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

什麼是'basket'?如果它是一個對象,則需要首先通過'JSON.stringify()'運行它,以便可以存儲字符串。 – Interrobang 2012-02-17 10:34:38

+0

籃子是一個字符串 – waterschaats 2012-02-17 10:36:39

+0

@waterschaats你可以把更多的腳本 – mgraph 2012-02-17 10:37:45

回答

46

我剛剛有同樣的問題。我通過修復了這個問題,總是在指定寫入cookie時的路徑的

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

這是jquery cookie插件的問題。它將默認爲當前頁面的路徑。

+9

當我嘗試這種方法時,它實際上將Cookie(在您的案例'籃子'中)設置爲具有路徑屬性的對象,而不是檢索cookie。 – 2012-10-03 15:23:53

+2

這是設置一個cookie到給定的路徑,而不是檢索。 – 2013-07-25 10:09:04

+1

這是錯誤的。它使用第二個參數的值創建一個cookie。 – lawrencealan 2014-07-01 18:42:10

1

我有同樣的問題,但我發現,當我再縮小jquery.cookie.js纔會出現這種情況,當我把

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

將它設置爲「/」,無論內部加載頁面時,如Cookie路徑,yourdomain.com/en/page1/page - Cookie path = '/'

0

我不認爲修補插件的主體是一個不錯的主意。可悲的是插件並沒有配置..我用的包裝函數:

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

用法:

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

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