2012-02-17 105 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'});