【问题标题】:How to update expiration date of cookie via jQuery?如何通过 jQuery 更新 cookie 的过期日期?
【发布时间】:2011-08-10 20:27:39
【问题描述】:

我想通过 jQuery 更新 cookie 的过期日期。我正在使用jQuery cookie plugin

这是我用来将到期日期设置为未来 8 小时的代码:

var date = new Date();
date.setTime(date.getTime() + (8 * 60 * 60 * 1000));
$.cookie('myCookie', $.cookie('myCookie'), { expires: date });

这创建了一个名称正确但属性错误的新 cookie:

  • 新 cookie 的值是 [object Object],而不是原来的、以 & 符分隔的键值 cookie 字符串
  • 新 cookie 中没有 SSL(安全)标志(旧 cookie 的 SSL 标志设置为 true)
  • 到期时间设置为浏览器退出时,而不是 8 小时后

什么是仅通过 jQuery 更新 cookie 过期日期的正确方法?

【问题讨论】:

    标签: jquery cookies jquery-plugins


    【解决方案1】:

    只要我的两分钱:你最初的 cookie 是什么?

    我尝试使用这样初始化的 cookie 重现您的问题:

    $.cookie("myCookie", "myValue")
    

    它成功了。

    但我尝试使用这样初始化的 cookie:

    $.cookie("myCookie", {myParameter: "myValue"})
    

    我不认为 cookie jQuery 插件是为存储对象而设计的。您只能保存字符串值。所以当你$.cookie("myCookie")时,它返回"[object Object]"

    【讨论】:

    • 我需要保留cookie的原始值,这就是我指定$.cookie("myCookie")的原因。但这不会返回 cookie 的原始值,而是返回 [object Object]。我需要 cookie 中包含的字符串(值)。
    • 是的,我认为它返回 [object Object] 因为您之前保存了一个对象而不是字符串值。这就是为什么我问:“你最初是如何存储 cookie 的?”
    【解决方案2】:

    这似乎有效:

    var date = new Date();
    date.setTime(date.getTime() + (8 * 60 * 60 * 1000));
    var myCookieValue = $.cookie('myCookie');
    $.cookie('myCookie', null);
    $.cookie('myCookie', myCookieValue, { expires:date, secure:true, path:'/' });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-28
      • 1970-01-01
      • 2011-03-25
      相关资源
      最近更新 更多