【问题标题】:jQuery Cookie pathjQuery Cookie 路径
【发布时间】:2012-03-08 18:09:30
【问题描述】:

我使用 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 });

}

【问题讨论】:

  • 什么是basket?如果它是一个对象,你需要先通过JSON.stringify() 运行它,这样你就可以存储一个字符串。
  • @waterschaats 你能放更多脚本吗
  • 您的 cookie 设置代码看起来不错。如果您在 Firefox 中检查 cookie,它会告诉您诸如域、路径和到期日期等信息。这可能会给你一个线索,问题是什么。其他浏览器也应该为您提供数据。
  • 读取cookie好像有问题?

标签: javascript jquery cookies


【解决方案1】:

我也遇到了同样的问题。我通过 always 在写入 cookie 时指定路径来修复它。

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

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

【讨论】:

  • 当我尝试此方法时,它实际上将 cookie(在您的情况下为“篮子”)设置为具有路径属性的对象,而不是检索 cookie。
  • 那是为了给给定的路径设置一个cookie,而不是检索。
  • 这是错误的。它使用第二个参数的值创建一个 cookie。
  • 我不认为这是真的,我总是用路径“/”属性写cookie,我突然注意到我有2个同名的cookie-不同的值-它是在“/”中创建的“正如我所料,奇迹般地也在路径“/about”中......并非总是如此,但有时会发生这种情况。
【解决方案2】:

在插件文件更改中:

config.defaults = {};

到

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

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        使用这个

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-10
          • 2014-02-15
          • 2012-11-26
          • 2012-08-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多