Ajax-cookie用法及封装

简介: Ajax-cookie用法及封装

1.什么是cookie


cookie是一种会话跟踪技术。


它是客户端使用的一种技术 服务端使用的会话跟踪技术是session。


2.cookie 的作用:


将网页中的数据保存到浏览器当中


3.cookie的生命周期


默认生命周期是一次会话,浏览器关闭之后数据就会被清除


4.如何设置cookie的生命周期


通过express设置过期时间,并且过期时间没有过期,那么下次打开浏览器数据还是存在。 如果已经过期了,那么会立即删除保存的数据。


 var date = new Date();
 date.setDate(date.getDate()+1);
 // 将生命周期设为明天
 document.cookie = "age = 33;express="+date.toGMTString()+";";


5.cookie注意点


5.1 cookie默认不会保存任何的数据


// 保存数据的方式
document.cookie = "age = 33;";


5.2 cookie不能一次性设置多条数据,想要保存多条数据,只能一条一条的设置


document.cookie="name=dxw,age=18;";
// 该设置方法是错误的
document.cookie="name = dxw;";
document.cookie="age = 18;";
// 只能分条设置


5.3 cookie保存数据有大小和个数的限制


个数限制:20~50 大小限制:4KB左右


6.cookie作用范围


6.1 路径问题


同一个浏览器的同一个路径下访问(同一个文件夹)


如何在上一级路径中也能访问?需要添加以下代码: path=/


document.cookie="name = dxw;path=/;";


6.2 域名问题


例:假设我们在www.123.com下面保存了一个cookie,那么我们在www.123.com中是无法访问的。


如果想在www.123.com中也能访问,那么我们需要再添加一句代码domain=123.com。


  document.cookie="name = dxw;path=/;doamin=123.com";
  // 这是保存cookie的完整形式


7.cookie封装


7.1 获取方法封装


//    这是没有封装cookie的情况:
    <script>
     window.onload=function (ev) {
         document.cookie = "age = 18;";
     }
 </script>
 // 无封装


这是没有封装的情况:


image.png


// Cookie封装函数:
    <script>
        window.onload=function (ev) {
            // document.cookie = "age = 18;";
            // 调用Cookie封装函数
            addCookie("name","dxw","1","/","127.0.1");
            function addCookie(key, value, day, path, domain){
                // 1.处理默认保存的路径
                var index = window.location.pathname.lastIndexOf("/")
                var currentPath = window.location.pathname.slice(0, index);
                path = path || currentPath;
                // 2.处理默认保存的domain
                domain = domain || document.domain;
                // 3.处理默认的过期时间
                if(!day){
                    document.cookie = key+"="+value+";path="+path+";domain="+domain+";";
                }else{
                    var date = new Date();
                    date.setDate(date.getDate() + 1);
                    document.cookie = key+"="+value+";expires="+date.toGMTString()+";path="+path+";domain="+domain+";";
                }
            }
        }
    </script>


封装cookie函数成功,我们可以看到这里的路径,过期时间,Domain已被修改!


image.png


8.封装进阶———Cookie获取和删除方法封装


  1. 首先获取cookie: console.log(document.cookie); 可以看到cookie被打印到控制台了。


image.png


2. 如何取出每一条cookie?


这里可以用";"分割 var res = document.cookie.split(";")然后打印到控制台console.log(res);我们看看效果。


image.png


得到一个数组,那么接下来只需要遍历这个数组拿到每一条cookie。


var res= document.cookie.split(";");
 for(var i = 0; i < res.length; i++){
       console.log(res[i]);
    }


image.png

3.如何拿到key?


var res= document.cookie.split(";");
 for(var i = 0; i < res.length; i++){
    var temp = res[i].split("=");
    if(temp[0] === "age") {
    console.log(temp[1]);
    }
    }


通过上面方法获取到了指定cookie的值。


image.png


接下来封装cookie获取方法


            function getCookie(key){
                // console.log(document.cookie);
                var res= document.cookie.split(";");
                // console.log(res);
                for(var i = 0; i < res.length; i++){
                    // console.log(res[i]);
                    var temp =res[i].split("=");
                    if(temp[0].trim() === key){
                        return temp[1];
                    }
                }
            }


7.2 删除方法封装


            function delCookie(key, path) {
                addCookie(key, getCookie(key), -1, path);
            }
            // 调用以下此方法就ok啦
             delCookie("name", "/");


image.png

相关文章
|
6月前
|
存储 开发框架 NoSQL
ASP.NET WEB——项目中Cookie与Session的用法
ASP.NET WEB——项目中Cookie与Session的用法
89 0
|
5月前
|
JSON 前端开发 JavaScript
前端Ajax、Axios和Fetch的用法和区别笔记
前端Ajax、Axios和Fetch的用法和区别笔记
94 2
|
6月前
|
前端开发
AJAX发送请求方法封装和请求函数底层刨析以及axios二次封装
AJAX发送请求方法封装和请求函数底层刨析以及axios二次封装
|
6月前
|
前端开发 API
用promise封装ajax
用promise封装ajax
45 0
|
前端开发 JavaScript API
Promise封装Ajax请求
Promise封装Ajax请求
54 0
|
前端开发 JavaScript
js - 封装ajax
简单封装/使用promise封装ajax/封装:$.ajax()
|
数据采集 存储 数据安全/隐私保护
详解Flask中session与cookie的用法
详解Flask中session与cookie的用法
|
小程序 前端开发
|
前端开发 JavaScript
uniapp中简单封装ajax
uniapp中简单封装ajax
196 0
|
前端开发
封装ajax请求接口
封装ajax请求接口
111 0