day 13 cookie

1.什么是cookie

什么是cookie:会话跟踪技术

会话:用户进行网站,开启浏览器到关闭浏览器的过程称为一次会话

会话跟踪技术:浏览器(客户端)和向服务器之间进行多次请求数据的时,实现数据共享的过程,就是会话跟踪

客户端:就是浏览器

服务器:互联网上的一台电脑,功能强大。

 

2.cookie的存和取

1)document.cookie = "键=值";//存

2)document.cookie//取   console.log(document.cookie) //返回string(也就是说保存的cookie是字符串)

3)特点:

a.保存在本地电脑硬盘中,不是在内存中

b.如果没有设置有效期,当关闭当前浏览器的会话,下次打开时原来的cookie设     置会自动清除

c.设置有多个信息,在获取时document.cookie,每个cookie信息会以"; "的方式输出    (useName=tom; pwd=123)     cookie保存的信息是字符串

 

3.有效期设置

cookie数据在浏览器上保存的时间,设置有效期就是设置cookie的一个参数expires

关于有效期的问题:

    如果没有设置有效期,cookie数据会在会话结束后自动消失

    如果设置了有效期,cookie会在有效期时间结束后消失

删除cookes,两种方式:

    将键的值设置为"" 

    将有效期设置有-1

有效期设置:

        var time = "2018/11/11";

        var t = new Date(time);

        document.cookie = "uname=tom;expires="+t    (在外面设置的值,则值为空,在后面添上+对应的变量)

删除一条cookie信息

        document.cookie = "uname=;expires="+new Date(0);

4.字符串和对象之间的类型转换问题.(很重要)

原因:cookie中无法保存一个对象类型的数据,只能保存字符串类型,如果需要保存对象格式的数据,必须先把数据转换为字符串类型。

 

1)JSON.stringify(obj),把对象或数组转换成JSON格式的字符串。"[]"或"{}" (注意: 字符串"{}"必须是严格的JSON格式)

2)JSON.parse(str),把JSON格式的字符串转换成对象或数组。

5.cookie保存数组或对象?(主要是怎么使用JSON.stringify(obj),JSON.parse(str))进行转换得到你想要的东西

var arr=[{name:"tom",pwd:123},{name:"jerry",pwd:456}];

1)document.cookie="arr="+arr;

  console.log(document.cookie);输出的是arr=[object Object],[object Object]

2)var json=JSON.stringify(arr);

    document.cookie="arr="+json;

    console.log(json);//输出的是[{"name":"tom","pwd":123},{"name":"jerry","pwd":456}]

    console.log(document.cookie);//输出的是arr=[{"name":"tom","pwd":123},{"name":"jerry","pwd":456}]

3)再加上一个cookie信息document.cookie="age=23";

然后就存在arr=[{"name":"tom","pwd":123},{"name":"jerry","pwd":456}]; age=23

1.var arr = document.cookie.split("; ");

//就变成[arr=[{"name":"tom","pwd":123},{"name":"jerry","pwd":456}],age=23]

2.var newArr = arr[0].split("=")[1];

//得到这么一串[{"name":"tom","pwd":123},{"name":"jerry","pwd":456}]//是一个字符串

3.alert(JSON.parse(newArr)[0].name)

转成数组,输出的是tom

6.cookie存储注意的问题

1.cookie存储数据不安全

2.cookie存储数据不能超过4kb 最多不能超过50条

3.cookie不能跨域

封装:

//设置cookie的封装

    function setCookie(key,value,date){

        if(date){

            document.cookie = key + "=" + value + "; expires=" + date;

        }else{

            document.cookie = key + "=" + value;

        }

    }

//获取cookie

function getCookie(key){

        //"key1=值1; key2=值2"

        var cookieVal = document.cookie;

        var cookieArr = cookieVal.split("; ");

        for (var i = 0; i < cookieArr.length; i++) {

            var arr = cookieArr[i].split("=");

            if(arr[0] == key){

                return arr[1];//是字符串

            }

        }

        return "";

    }

//删除cookie

function deleteCookie(key){

        document.cookie = key+"=;expires="+new Date(0);

    }

案例,注册登录的案例(重要)要理解得很清楚;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值