繁体   English   中英

从 cookie 中获取参数值

[英]get parameter value from cookie

嗨,我有一个小问题。 目前我有 2 个参数保存在浏览器 cookie 中,它们是 ADV 和 LOC ......现在我有一个带有表单的页面,表单有两个隐藏字段:

<input type="hidden" name="adv" value="" />
<input type="hidden" name="loc" value="" />

我需要从 cookie 中获取 adv 和 loc 的值并将它们保存在隐藏的表单字段中...我该怎么做? 谢谢

document.cookie将以下列格式为您获取所有 cookie:

'adv=adv_val; loc=loc_val;'

要从 cookie 中获取值,您可以使用此函数(来自quirksmode ):

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

要填充隐藏字段,您可以遍历所有隐藏字段,并获取它们各自的 cookie:

function hiddenCookies(){
  var inputs = document.getElementsByTagName('input');
  for(var i = 0; i < inputs.length; i++){
      var element = inputs[i];
      if(element.getAttribute('type') == 'hidden'){
          element.value = readCookie(element.name);
      }
  }
}

然后修改<body>以获得onload

<body onload="hiddenCookies()">

或者使用 jQuery:

$(function(){
  $('input:hidden').each(function(i,v){
      v.value = readCookie(v.name);
  });
});

您可以使用此代码段将 cookie 字符串转换为地图。

let cookieMap = document.cookie.split(";").map((str)=>str.split("=")).reduce(reduceToMap(map,curr),{});

function reduceToMap(map,currentArray) {
  // convert array to map
  map[currArray[0]] = currentArray[1];
  return map;
}

这样做的主要内容如下:

  1. 将字符串拆分为字符串数组(形式为“key=value”)
  2. 将此数组的每个字符串映射到 ["key","value"] 形式的数组
  3. 将此数组数组(形式为 [ ["k1","v1"], ["k2","v2"] ])简化为映射

现在,您可以通过执行以下操作简单地访问任何 cookie:

let cookieName = "name of the cookie you want to access";
let cookieValue = cookieMap[cookieName];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM