×

怎么用JavaScript获取cookie

作者:前端菜鸟2017.10.26来源:Web前端之家浏览:8606评论:0
关键词:cookies

JavaScript 通过 document.cookie 来获取 cookie 。
遗憾的是,document.cookie 只能获取所有 cookie 的集合,不能获取单个 cookie 。
例如,获取当前cookie集合:

<input id="demo1" type="button" value="获取cookie" />
<script type="text/javascript">
document.getElementById("demo1").onclick=function(){
    alert(document.cookie);
}
</script>

我们可以自定义一个函数来获取单个 cookie 的值。
我们知道,cookie 集合的格式是这样的:
name1=value1 ; name2=value2 ; name3=value3 ; ...
将 cookie 以分号(;)分组,再以等号(=)分组,就能得到每个 cookie 的名称和值。

/**
  *  func  getCookie()  获取单个cookie的值
  *  pram  cookieName  cookie的名称
**/
function getCookie(cookieName){
    var cookieObj={},
          cookieSplit=[],
          // 以分号(;)分组
          cookieArr=document.cookie.split(";");
    for(var i=0,len=cookieArr.length;i<len;i++)
        if(cookieArr[i]) {
            // 以等号(=)分组
            cookieSplit=cookieArr[i].split("=");
            // Trim() 是自定义的函数,用来删除字符串两边的空格
            cookieObj[cookieSplit[0].Trim()]=cookieSplit[1].Trim();
        }
    return cookieObj[cookieName];
}

例如,获取 name 的值:

getCookie["name"];

对上面的代码稍作修改,就可将 cookie 的值保存为对象的属性,使用时非常方便。代码如下:

/**
  *  func  getCookieObj()  获取所有cookie的值并将其保存为对象的属性
**/
function getCookieObj(){
    var cookieObj={},
          cookieSplit=[],
          // 以分号(;)分组
          cookieArr=document.cookie.split(";");
    for(var i=0,len=cookieArr.length;i<len;i++)
        if(cookieArr[i]) {
            // 以等号(=)分组
            cookieSplit=cookieArr[i].split("=");
            // Trim() 是自定义的函数,用来删除字符串两边的空格
            cookieObj[cookieSplit[0].Trim()]=cookieSplit[1].Trim();
        }
    return cookieObj;
}

例如,获取 name 的值:

var cookieObj=getCookieObj();
cookieObj.name;

举例,设置并获取cookie的值:

<table>
    <tr>
        <td>用户名:</td>
        <td><input id="demo_input1" type="text" /></td>
        <td>密码:</td>
        <td><input id="demo_input2" type="text" /></td>
    </tr>
    <tr>
        <td colspan="2" align="center"><input id="demo_button1" type="button" value="设置Cookie" /></td>
        <td colspan="2" align="center"><input id="demo_button2" type="button" value="获取Cookie" /></td>
    </tr>
</table>
 
<script type="text/javascript">
    document.getElementById("demo_button1").onclick=function(){
        var cookie_username="username="+escape(document.getElementById("demo_input1").value)+";"+
                        "expire="+((new Date()).getTime()+600*1000);
        var cookie_password="password="+escape(document.getElementById("demo_input2").value)+";"+
                        "expire="+((new Date()).getTime()+600*1000);
        document.cookie=cookie_username;
        document.cookie=cookie_password;
    }
    document.getElementById("demo_button2").onclick=function(){
        var cookieObj=getCookieObj();
        alert(
            "用户名:"+unescape(cookieObj.username)+"\n"+
            "密码:"+unescape(cookieObj.password)
        );
    }
</script>

您的支持是我们创作的动力!
温馨提示:本文作者系 ,经Web前端之家编辑修改或补充,转载请注明出处和本文链接:
https://jiangweishan.com/article/jsASDFJSDF123123.html

网友评论文明上网理性发言 已有0人参与

发表评论: