【问题标题】:Setting multiple cookies in Javascript在 Javascript 中设置多个 cookie
【发布时间】:2017-10-20 23:41:41
【问题描述】:

我正在尝试在 document.cookie 中设置多个 cookie,但不幸的是只添加了一个。

我知道网络上有多个设置此类 cookie 的示例,我关注了其中一个。但我仍然无法说明这一点。 我按照link 设置了我的 cookie。

我的代码:

   function setCookie(start_time,end_session_time,total_time,flag,count){
     var cookie_string = "start_time="+start_time;;

    if(end_session_time) {
        cookie_string +="; end_session_time="+end_session_time;
    }

    if(total_time){
        cookie_string +="; total_time="+total_time;
    }
    if(flag){
        cookie_string +="; flag="+flag;
    }
    if(count){
        cookie_string +="; count="+count;
    }

    document.cookie =cookie_string ;
    console.log(cookie_string);

    console.log("document.cookie ="+ document.cookie);
}

输出:

cookie_string :: start_time=1369926508266; flag=1; count=1
document.cookie =start_time=1369926508266; 

【问题讨论】:

标签: javascript cookies


【解决方案1】:

通过document.cookie = "name=value" 执行添加cookie 要添加多个键,您应该执行多个分配

function setCookie(start_time, end_session_time, total_time, flag, count) {
    document.cookie = "start_time=" + start_time;

    if (end_session_time) {
        document.cookie = "end_session_time=" + end_session_time;
    }
    if (total_time) {
        document.cookie = "total_time=" + total_time;
    }
    if (flag) {
        document.cookie = "flag=" + flag;
    }
    if (count) {
        document.cookie = "count=" + count;
    }

    console.log("document.cookie = " + document.cookie);
}

【讨论】:

  • 我不认为这会奏效——因为它违反直觉——但确实如此! :-O
  • 第 2 行有 2 个分号是有原因的还是一个错误?
  • @Jaketr00 那一定是个错误。我已经编辑过了。
  • @Brad,是的……这正是我在谷歌上搜索并最终来到这里的原因:)。
【解决方案2】:

Cookie 是键值对(添加了一些可选的附加信息,例如到期日期)。要设置多个,您只需多次设置document.cookie; 分隔符用于指定附加信息,而不是添加更多不同的 cookie。

【讨论】:

  • 请务必提供代码示例。我相信第二次设置 document.cookie 变量会覆盖第一个值,不是吗?
  • 这是违反直觉的,但是设置document.cookie 不会覆盖已经设置的cookie,除了一个同名的cookie,如果它存在的话。删除 cookie 的方法是将其过期日期设置为过去。我建议您在浏览器的开发者工具中进行试验!
【解决方案3】:

这是一个添加、列出和删除多个 cookie 的示例

<!DOCTYPE html>
<html>
<head>
<script>
var n=1;
function addCookie(){
document.cookie=n+"="+n;n++;
}

function ListCookies(){
var result = document.cookie;
document.getElementById("p").innerHTML=result;
}

function removeCookies(){
//document.cookie="";
var result = document.cookie;
var cookieArray = result.split(";");
for(var i=0;i<cookieArray.length;i++){
   var keyValArr = cookieArray[i].split("=");
   document.cookie=keyValArr[0]+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC";
}
}

</script>

</head>
<body>
<button onclick='addCookie()'>ADD COOKIE</button><br>
<button onclick='ListCookies()'>LIST COOKIES</button>
<button onclick='removeCookies()'>REMOVE COOKIES</button>
<h1>RESULT:</h1>
<p id="p"></p>
</body>
</html>

【讨论】:

  • 是否可以删除特定的cookie?而是删除所有cookie。假设我一个接一个地添加了三个值。我想删除第二个cookie。你能帮忙@mateen
  • 是的,这是可能的,在删除 cookie 之前检查它是否是要删除的 cookie。像 ***************** if(yourCondition){ document.cookie=keyValArr[0]+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"; }
  • 请您检查一下这个问题。 stackoverflow.com/questions/51693350/…
猜你喜欢
  • 2012-12-18
  • 1970-01-01
  • 1970-01-01
  • 2015-10-28
  • 2013-11-01
  • 2015-12-21
  • 1970-01-01
  • 1970-01-01
  • 2011-12-27
相关资源
最近更新 更多