【问题标题】:javascript getting setting deleteing cookiesjavascript获取设置删除cookies
【发布时间】:2011-09-28 05:54:08
【问题描述】:

我在 php 中设置和删除 cookie 时遇到问题我没有问题.. 在 javascript 中嗯.. 很多我知道这个问题无处不在,但我遇到的所有答案似乎都给我带来了同样的命运,所以我不知道发生了什么事..这就是我目前所拥有的。

SetCookie("username",ztsUser,14,'/', '');

function SetCookie (name,value,expires,path,domain,secure) {
  document.cookie = name + "=" + escape (value) +
    ((expires) ? "; expires=" + expires.toGMTString() : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
  }

错误:

expires.toGMTString 不是函数

我拥有的所有 cookie 功能.. 是:

    var today = new Date();
var expiry = new Date(today.getTime() + 365 * 24 * 60 * 60 * 1000);

function getCookieVal (offset) {
  var endstr = document.cookie.indexOf (";", offset);
  if (endstr == -1) { endstr = document.cookie.length; }
  return unescape(document.cookie.substring(offset, endstr));
  }

function GetCookie (name) {
  var arg = name + "=";
  var alen = arg.length;
  var clen = document.cookie.length;
  var i = 0;
  while (i < clen) {
    var j = i + alen;
    if (document.cookie.substring(i, j) == arg) {
      return getCookieVal (j);
      }
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0) break; 
    }
  return null;
  }

function DeleteCookie (name,path,domain) {
  if (GetCookie(name)) {
    document.cookie = name + "=" +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
  }

function SetCookie (name,value,expires,path,domain,secure) {
  document.cookie = name + "=" + escape (value) +
    ((expires) ? "; expires=" + expires.toGMTString() : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
  }

如果有人知道更好的方法,我全神贯注..但这就是我目前得到的,我需要设置,更新,删除,获取..cookies的值

【问题讨论】:

    标签: javascript cookies session-cookies


    【解决方案1】:

    toGMTString 已被弃用。改用toUTCString

    function SetCookie (name,value,expires,path,domain,secure) {
      document.cookie = name + "=" + escape (value) +
        ((expires) ? "; expires=" + expires.toUTCString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
    }
    

    当函数需要一个日期 (expires.toUTCString) 时,您还传递了一个数字 (14):

    SetCookie("username", ztsUser, 14, '/', '');
    

    14 是什么意思? 14天?假设,您可以在函数顶部添加它以同时支持数字和日期:

    if ('number' === typeof expires) {
        expires = new Date(new Date().getTime() + expires * 86400000);
    }
    

    86400000 是一天中的毫秒数 -- 24 * 60 * 60 * 1000

    【讨论】:

    • @chris 你在混合类型——当函数需要一个日期时传递一个数字。有关详细信息,请参阅我的编辑。
    【解决方案2】:

    已经有很多很棒的库可以在 JS 中处理 cookie。为什么不使用其中之一?只需转到您喜欢的搜索引擎并输入“javascript cookie 库”即可找到。

    【讨论】:

    • (由于我没有足够的声誉来否决此评论,我会注意到 (a) 在某些情况下,无需花费大量时间搜索和评估即可设置 cookie库,甚至只是安装它们,并且(b)这是一个问题而不是答案。(而且,是的,我找到了这个页面,因为我在其中一个上下文中 - 结果我的问题是我正在使用默认日期格式(从上个千年的某个时间开始,它在主要浏览器中一直有效,但有人认为应该不再有效)。)
    猜你喜欢
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多