• 关于cookie和$.cookie


     var d = new Date();
        d.setDate(d.getDate()+day);//设置day天后清除缓存删除设置的时间;
    

      

    简单的总结了一下cookie的使用,之前总是有迷惑的地方,感觉总结之后要清晰了许多

    1. cookie

    定义 : cookie是小量信息,由网络服务器发送出来以存储在网络浏览器上,从而下次这位独一无二的访客有回到该网络服务器时,可从该浏览器读回此信息。
     
    使用原因:web程序是使用HTTP协议传输的,而HTTP协议是无状态的协议,对于事物处理没有记忆能力;缺少状态意味着如果后续处理需要前面的信息,则他必须重传,这样导致每次连接传送的数据量增加;cookie产生是为了弥补HTTP协议的不足;
    终止条件:结束浏览器对话时候,即终止所有的cookie;
     
    特点:(1)只能存储文本文件 (2)文本文件有大小限制4kb (3)数量限制50条 (4)读取有域名限制 不可跨越读取 (5)时效限制
     
    使用时注意:
     
    (1) document.cookie:当获取页面中的cookie值和名字符串类型;前页面存在,关闭后就没有了;document.cookie = "user = yanghuaizhi;pass = 123"
    (2) 时效性:必须是日期对象;
        
     var d = new Date();
        d.setDate(d.getDate()+day);//设置day天后清除缓存删除设置的时间; 
     
    (3)cookie路径 :但凡路径不同视为两个cookie;
     
    (4)存储cookie
     function setCookie(name,path){
    	 document.cookie = name +"="+ value+";path="+path+";expires="+d
     }
      setCookie("pass","123")
    

    (5) 移除cookie

      function removeCookie(name,path){
    	 setCookie(name,null,-1,path)
      }
      removeCookie("pass","/");
    

    (6)获取getCookie

     function getCookie(name){
                    var sCookie = document.cookie;//获取当前页面的cookie;
                    var aCookie = sCookie.split(";");//将获取的字符串转化为数组;[]
                    for(var i = 0; i < aCookie.length; i ++){//遍历数组,转化为单个数组;
                       var aCookieItem = aCookie[i].split("=");//将数组中的等号删除;
                              if(aCookieItem[0] == name){//传入的参数等于名字;
                                 return aCookieItem[1];
                                }
                             }
                            return "";//如果没有获取到就返回空
                             }
                             getCookie("pass");
    
    (10).小案例 购物车;//需要用到拼接时候获取的json
                             var d = new Date();
                              d.setDate(d.getDate() + 7);
                               var cookieKey = "product_" + res[i].id;
                               var cookieValue = "{name:'res[i].name'}";
                               document.cookie = cookieKey + "=" + cookieValue;
                               var arr = document.cookie.split(";");
                               for(var i = 0; i < arr.length; i ++){
                               	 var val = arr[i].split("=");//{name:'张三',price:'¥34.0',num:2};实际上有"";
                               	 if(val[0].indexOf(cookieKey) == 0){
                               	 	   var p = eval("("+val[1]+")");//将字符串""删去;
                               	 	   console.log(p.price);
                               	 }
                               }
    

    2.$cookie

    语法:$.cookie(名称,值,[option])
     
    (1)读取cookie值
    $.cookie(cookieName);
    

      

     
    (2)写入设值
    $.cookie(cookieName,cookieValue);
    $.cookie(cookieName,NULL);//销毁名为他的cookie;
     
    (3)[option]参数说明
     
    expires:有限日期;不设置的时候关闭浏览器的时候就消失了;
    path:保存路径;默认和创建页路径一样;跨域二级域名有效要设值".xx.com"
    secrue:默认为false,是否需要一个安全协议HTTP
     
    (4)$.cookie("name",$(value).val(),{path:"/",expires:"7"});
     
    注意点;cookie本质上是一个txt文本,只能够存入字符串,对象通常要序列化,而取得时候要反序列才得到对象;
     
    (1)需要注意:同时存储多个数据的时候;在数组和字符串之间转换;
    (2)数组=>修改数据
    (3)字符串=》放进cookie之中
    (4)没有cookie的情况下建立数据结构;有cookie的时候向结构中插入
    (5)判断是否有cookie
            
     if($.cookie("o") == null){
                   var o = {name:"zz",age :24};
                   var str = JSON.stringify(0);//序列化后成字符串存入cookie
                   $.cookie("o",str,{expires:7});
                   alert("为空");
                 }else{ //存在读出来
                   var str1 = $.cookie("o");
                   var 01 = JSON.parse(str1);//字符串反序列化对象,输出对象的姓名值;
                   alert(01.name);
                 }
    

    (6)存储cookie中可能出现的问题  

    报错 : google浏览器 提示:has no method $.cookie 火狐浏览器提示:$.cookie is not a function ;可能是同一个页面两次或者多次引入jquery插件

    $.cookie小案例 购物车

     

     //需要注意:同时存储多个数据的时候;在数组和字符串之间转换;
                          //数组=>修改数据
                          //字符串=》放进cookie之中
                          //没有cookie的情况下建立数据结构;有cookie的时候向结构中插入;
                            if(!$.cookie("goods")){
    			//不存在
    			$.cookie("goods",'[{"id":'+id+',"num":1}]');
    			}else{
    			//数据结构存储
    				var cookie = $.cookie("goods");
    				var cookieArr = JSON.parse(cookie);
    				var same = false;//是否建立存储数据的模式
    				for(var i = 0; i < cookieArr.length;i ++){
    				if(cookieArr[i].id == id){
    				//数据结构中存在当前的商品
    			         	cookieArr[i].num++;
    					same = true;
    					break;
    				}
    			}
    			if(same == false){
    			var obj = {//不相等存入
    			id : id,
    	          	num : 1
    		  };
    			  cookieArr.push(obj);
    		}
    				
    													cookie  = JSON.stringify(cookieArr);//存进cookie
    													$.cookie("goods",cookie);
                        (2)获取数量
                           howMany(){
    			if($.cookie("goods")){
    			    var acookie = JSON.parse($.cookie("goods"))
    			}
    	                       var res = 0;
    				for(var  i = 0; i < acookie.length;i++){
    				  res += acookie[i].num;
    			  }
    										        
    				 return res;
    									    	}
    

      

  • 相关阅读:
    Android开发(十五)-Service和BroadcastReceiver
    Android开发(十四)-ContentProvider数据共享
    Android开发(十三)-图形与图像处理
    Android开发(十二)-Android应用资源
    Android开发(十一)-Intent和IntentFilter通信
    Android开发(十)-Activity和Fragment
    Android开发(九)-事件机制
    模拟面试
    二叉堆
    面试
  • 原文地址:https://www.cnblogs.com/naniandongzhi/p/7953863.html
Copyright © 2020-2023  润新知