jQuery Cookie路径

时间:2012-02-17 10:30:38

标签: javascript jquery cookies

我使用jQuery cookie插件存储cookie,使用以下代码我可以将Cookie保存7天,但它只保存它创建的页面。我希望cookie可以在整个网站上使用。

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

我试图设置路径,但这似乎不起作用

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

完整代码:这样可以正常工作,但它只保存当前页面的cookie

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

}

5 个答案:

答案 0 :(得分:48)

我遇到了同样的问题。我通过始终来修复它,在编写cookie时指定路径。

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

这是jquery cookie插件的问题。它将默认为当前页面的路径。

答案 1 :(得分:14)

在插件文件中更改:

  

config.defaults = {};

  

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

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

答案 2 :(得分:1)

我遇到了同样的问题,但我发现这种情况只有在我缩小jquery.cookie.js和我放入

时才会发生
config.defaults = {expires: 180, path:'/', domain: '.domain.com' };

它将Cookie路径设置为' /',无论加载什么内部页面,例如yourdomain.com/en/page1/page - Cookie路径= '/'

答案 3 :(得分:1)

我认为修补插件的主体并不是一个好主意。可悲的插件是不可配置的..我使用包装函数:

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

答案 4 :(得分:0)

使用此

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