zoukankan      html  css  js  c++  java
  • cookie的设置和获取

    1.Cookie设置

    每个cookie都是一个名/值对(key=value)格式的字符串 例如: document.cookie="user1=YY";

    如果要改变一个cookie的值,只需重新赋值

    例如: document.cookie="user1=QQ";

    封装获取cookie的函数

    function setCookie(user,value,day){
      var dates=new Date();
      dates.setDate(dates.getDate()+day);
      document.cookie=user+'='+value+'; expires='+day;
    }
    setCookie('user1','小明',3);

    这种情况下用以上代码没有问题,但是若是设置的value有特殊字符,那么保存的值可能是不确定的。就用到cookie编码来处理

    cookie值编码处理

    在cookie 的名或值中不能使用分号(;)、逗号(,)、 等号(=)以及空格等特殊符号。在cookie的名中做到这点很容易,但要保存的值可能是不确定的。

    escape( )函数进行编码,它能将一些特殊符号使用十六进制表示,从而可以存储于cookie值中

    当使用escape( )编码后,在取出值以后需要使用unescape( )进行解码才能得到原来的cookie值。

    function setCookie(key,val,Days){//设置cookie
      var dates=new Date();//当前时间对象
      dates.setDate(dates.getDate()+Days);//设置有效期
      document.cookie=key+'='+escape(val)+'; expires='+dates;
    }

    setCookie('user5','马;56,4?5=3六',7);

    2,获取cookie

    ar cookies=document.cookie; //获取

    alert(cookies);

    返回:"user1=YY; user2=MM"

    只能够一次获取所有的cookie值

    用户必须自己解析这个字符串,来获取指定的cookie值

    split() 方法用于把一个字符串分割成字符串数组

    function getCookie(key){
      var arr=document.cookie.split('; ');
      for (var i = 0; i < arr.length; i++) {
        var arr2=arr[i].split('=');//[user1,张三]
        if (arr2[0]==key) {
          return unescape(arr2[1]);
        };
      };
      return false;//没有则返回false
    }

    3.删除cookie

    cookie过期会自动消失

    要删除一个cookie,可将其有效期设为一个过去的时间

    function rmCookie(key){
      setCookie(key,'abc',-1);
    }

  • 相关阅读:
    前端性能优化:使用异步加载,延迟加载依赖
    超酷的图片标题悬浮特效
    JQuery插件:动态列和无间隙网格布局Mason.js
    如何高效地产生多个不重复的随机数?
    Endnote专题之--output style相关问题
    机器学习中的相似性度量(Similarity Measurement)
    C语言生成服从均匀分布, 瑞利分布, 莱斯分布, 高斯分布的随机数
    MathType中如何批量修改公式字体和大小
    LaTeX 算法代码排版 --latex2e范例总结
    Latex论文写作-Texsdudio 快捷键总结
  • 原文地址:https://www.cnblogs.com/SunShineM/p/6011744.html
Copyright © 2011-2022 走看看