web-dev-qa-db-ja.com

jQuery Cookieパス

Cookieの保存にはjQuery Cookieプラグインを使用し、次のコードではCookieを7日間保存できますが、作成されたページに対してのみ保存します。 CookieをWebサイト全体で使用できるようにします。

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

}
32
waterschaats

私は同じ問題を抱えていました。 alwaysでCookieの書き込み時にパスを指定することで修正しました。

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

これはjquery cookieプラグインの問題です。デフォルトでは現在のページのパスになります。

51
Tim Santeford

プラグインファイルの変更:

config.defaults = {};

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

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

14
bitlove

私は同じ問題を抱えていましたが、これはjquery.cookie.jsそして私が入れたとき

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

cookieパスを「/」に設定します。たとえば、yourdomain.com/en/page1/page-Cookieパス= '/'

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'}); 
1
zzmaster