jquery.cookie用法详细解析


Posted in Javascript onDecember 18, 2013

Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。

例如购物网站存储用户曾经浏览过的产品列表,或者门户网站记住用户喜欢选择浏览哪类新闻。 在用户允许的情况下,还可以存储用户的登录信息,使得用户在访问网站时不必每次都键入这些信息?

怎么在js/jquery中操作处理cookie那?今天分享一个cookie操作类--jQuery.Cookie.js,是一个轻量级的Cookie管理插件。

Cookie下载地址: http://plugins.jquery.com/project/cookie.

特别提醒,今日发现一个特别的错误,google浏览器提示:has no method $.cookie。火狐浏览器提示:$.cookie is not a function;调试了半天,终于找到原因,如果同一个页面两次或者多次引入Jquery插件就会报此错误。

使用方法:

1、引入jQuery与jQuery.Cookie.js插件。

<script src="jQuery.1.8.3.js" type="text/javascript"></script> 

<script src="jquery.cookie.js" type="text/javascript"></script>

2.将cookie写入文件

var COOKIE_NAME = 'username';  
  if( $.cookie(COOKIE_NAME) ){  
    $("#username").val( $.cookie(COOKIE_NAME) );  
  }  
  $("#check").click(function(){  
    if(this.checked){  
      $.cookie(COOKIE_NAME, $("#username").val() , { path: '/', expires: 10 });  
      //var date = new Date();  
      //date.setTime(date.getTime() + (3 * 24 * 60 * 60 * 1000)); //三天后的这个时候过期  
      //$.cookie(COOKIE_NAME, $("#username").val(), { path: '/', expires: date });  
    }else{  
      $.cookie(COOKIE_NAME, null, { path: '/' }); //删除cookie  
    }  
  });

函数。

 语法:$.cookie(名称,值,[option])

 (1)读取cookie值

 $.cookie(cookieName)

 cookieName:要读取的cookie名称。

示例:$.cookie("username"); 读取保存在cookie中名为的username的值。

 (2)写入设置Cookie值:

 $.cookie(cookieName,cookieValue);

cookieName:要设置的cookie名称,cookieValue表示相对应的值。

 示例:$.cookie("username","admin"); 将值"admin"写入cookie名为username的cookie中。

  $.cookie("username",NULL);

 销毁名称为username的cookie

 (3) [option]参数说明:

 expires:

有限日期,可以是一个整数或一个日期(单位:天)。

这个地方也要注意,如果不设置这个东西,浏览器关闭之后此cookie就失效了

 path:

  cookie值保存的路径,默认与创建页路径一致。

domin: cookie域名属性,默认与创建页域名一样。

这个地方要相当注意,跨域的概念,如果要主域名二级域名有效则要设置

".xxx.com"

secrue:

一个布尔值,表示传输cookie值时,是否需要一个安全协议。

 示例:

$.cookie("like", $(":radio[checked]").val(), { 

        path: "/", expiress: 7 

        })

一个完整设置与读取cookie的页面代码:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
  <title>jQuery学习2</title> 
  <script src="jQuery.1.8.3.js" type="text/javascript"></script> 
  <script src="jquery.cookie.js" type="text/javascript"></script> 
  <script type="text/javascript"> 
    $(function () { 
      $("#username").val($.cookie("username")); 
      if ($.cookie("like") == "刘德华") { 
        $(":radio[value='刘德华']").attr("checked", 'checked') 
      } 
      else { 
        $(":radio[value='张学友']").attr("checked", 'checked') 
      } 
      $(":button").click(function () { 
        $.cookie("username", $("#username").val(), { 
          path: "/", expires: 7 
        }) 
        $.cookie("like", $(":radio[checked]").val(), { 
          path: "/", expiress: 7 
        }) 
      }) 
    }) 
  </script> 
</head> 
<body> 
  <p><input type="text" id="username" value="" /></p> 
  <p> 
    <input type="radio" name="like" value="刘德华" />刘德华 
    <input type="radio" name="like" value="张学友" />张学友 
  </p> 
  <p><input type="button" value="保存" /></p> 
</body> 
</html>

cookie本质上是一个txt文本,因此只能够存入字符串,对象通常要序列化之后才能存入cookie,而取的时候要反序列才又能得到对象。

$(function () { 
     if ($.cookie("o") == null) { 
       var o = { name: "张三", age: 24 }; 
       var str = JSON.stringify(o);//对序列化成字符串然后存入cookie 
       $.cookie("o", str, { 
         expires:7  //设置时间,如果此处留空,则浏览器关闭此cookie就失效。 
       }); 
       alert("cookie为空"); 
     } 
     else { 
       var str1 = $.cookie("o"); 
       var o1 = JSON.parse(str1);
//字符反序列化成对象 
       alert(o1.name);



//输反序列化出来的对象的姓名值 
     } 
   })

一个轻量级的cookie插件,可以读取、写入、删除cookie。

jquery.cookie.js的配置

首先包含jQuery的库文件,在后面包含jquery.cookie.js的库文件

<script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="js/jquery.cookie.js"></script>

使用方法

新添加一个会话cookie:

$.cookie('the_cookie', 'the_value');

注:当没有指明cookie有效时间时,所创建的cookie有效期默认到用户关闭浏览器为止,所以被称为“会话cookie(session cookie)”
 

创建一个cookie并设置有效时间为7天:

$.cookie('the_cookie', 'the_value', { expires: 7 });

注:当指明了cookie有效时间时,所创建的cookie被称为“持久cookie(persistent cookie)”。

创建一个cookie并设置cookie的有效路径:

$.cookie('the_cookie', 'the_value', { expires: 7, path: '/' });

注:在默认情况下,只有设置cookie的网页才能读取该cookie。如果想让一个页面读取另一个页面设置的cookie,必须设置cookie的路径。

cookie的路径用于设置能够读取cookie的顶级目录。将这个路径设置为网站的根目录,可以让所有网页都能互相读取cookie(一般不要这样设置,防止出现冲突)

读取cookie:

$.cookie('the_cookie');

// cookie存在 => 'the_value' $.cookie('not_existing'); // cookie不存在 => null

删除cookie,通过传递null作为cookie的值即可:

$.cookie('the_cookie', null);

相关参数的解释

expires: 365

定义cookie的有效时间,值可以是一个(从创建cookie时算起,以天为单位)或一个Date。

如果省略,那么创建的cookie是会话cookie,将在用户退出浏览器时被删除。
 

path: '/'

默认情况:只有设置cookie的网页才能读取该cookie。

定义cookie的有效路径。默认情况下,该参数的值为创建cookie的网页所在路径(标准浏览器的行为)。

如果你想在整个网站中访问这个cookie需要这样设置有效路径:path: '/'。

如果你想删除一个定义了有效路径的cookie,你需要在调用函数时包含这个路径:$.cookie('the_cookie', null, { path: '/' });。

domain: 'example.com'

默认值:创建cookie的网页所拥有的域名。
 

secure: true

默认值:false。如果为true,cookie的传输需要使用安全协议(HTTPS)。
 

raw: true

默认值:false。 默认情况下,读取和写入cookie的时候自动进行编码和解码(使用encodeURIComponent编码,decodeURIComponent解码)。

要关闭这个功能设置raw: true即可。

$.cookie('the_cookie'); // get cookie $.cookie('the_cookie', 'the_value'); // set cookie $.cookie('the_cookie', 'the_value', { expires: 7 }); // set cookie with an expiration date seven days in the future $.cookie('the_cookie', '', { expires: -1 }); // delete cookie
$.cookie('the_cookie', null); // delete cookie

$.cookie('the_cookie','the_value', {expires: 7, path: '/', domain:'80tvb.com', secure: true});//完整调用方式

//或者这样:$.cookie('the_cookie','the_value');

//删除Cookie: $.cookie('the_cookie',null);

 

jQuery操作cookie的插件,大概的使用方法如下

$.cookie('the_cookie'); //读取Cookie值
$.cookie('the_cookie', ‘the_value'); //设置cookie的值
$.cookie('the_cookie', ‘the_value', {expires: 7, path: ‘/', domain: ‘jquery.com', secure: true});//新建一个cookie 包括有效期 路径域名等
$.cookie('the_cookie', ‘the_value'); //新建cookie
$.cookie('the_cookie', null); //删除一个cookie

jquery设置cookie过期时间与检查cookies是否可用

让cookies在x分钟后过期
var date = new date();
date.settime(date.gettime() + (x * 60 * 1000));
$.cookie(‘example', ‘foo', { expires: date });

$.cookie(‘example', ‘foo', { expires: 7});

检查cookies是否可用
$(document).ready(function() {var dt = new date();dt.setseconds(dt.getseconds() + 60);document.cookie = “cookietest=1; expires=” + dt.togmtstring();var cookiesenabled = document.cookie.indexof(“cookietest=”) != -1;if(!cookiesenabled){//cookies不能用……..}}); 

Javascript 相关文章推荐
javascritp实现input输入框相关限制用法
Jun 29 Javascript
根据IP的地址,区分不同的地区,查看不同的网站页面的js代码
Feb 26 Javascript
js 赋值包含单引号双引号问题的解决方法
Feb 26 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
Jun 09 Javascript
javascript浏览器兼容教程之事件处理
Jun 09 Javascript
使用js画图之正弦曲线
Jan 12 Javascript
JS实现的倒计时效果实例(2则实例)
Dec 23 Javascript
js style.display=block显示布局错乱问题的解决方法
Sep 21 Javascript
js仿QQ邮箱收件人选择与搜索功能
Feb 10 Javascript
JS匹配日期和时间的正则表达式示例
May 12 Javascript
vueScroll实现移动端下拉刷新、上拉加载
Mar 22 Javascript
使用vue重构资讯页面的实例代码解析
Nov 26 Javascript
Event altKey,ctrlKey,shiftKey属性解析
Dec 18 #Javascript
extjs4 treepanel动态改变行高度示例
Dec 17 #Javascript
Javascript浅谈之this
Dec 17 #Javascript
将list转换为json失败的原因
Dec 17 #Javascript
js实现可拖动DIV的方法
Dec 17 #Javascript
js复制网页内容并兼容各主流浏览器的代码
Dec 17 #Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
Dec 17 #Javascript
You might like
php异常处理技术,顶级异常处理器
2012/06/13 PHP
如何使用php等比例缩放图片
2016/10/12 PHP
php输出文字乱码的解决方法
2019/10/04 PHP
JQuery自定义事件的应用 JQuery最佳实践
2010/08/01 Javascript
js判断undefined变量类型使用typeof
2013/06/03 Javascript
浅析JavaScript中的类型和对象
2013/11/29 Javascript
Node.js(安装,启动,测试)
2014/06/09 Javascript
javascript里绝对用的上的字符分割函数总结
2014/07/31 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
2015/03/14 Javascript
JavaScript用select实现日期控件
2015/07/17 Javascript
seajs学习之模块的依赖加载及模块API的导出
2016/10/20 Javascript
对Angular.js Controller如何进行单元测试
2016/10/25 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
2019/05/13 Javascript
微信小程序实现下拉刷新动画
2019/06/21 Javascript
js实现一个简易计算器
2020/03/30 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
微信小程序音乐播放器开发
2019/11/20 Javascript
小程序自定义模板实现吸顶功能
2020/01/08 Javascript
详解vue中v-on事件监听指令的基本用法
2020/07/22 Javascript
Python获取Linux系统下的本机IP地址代码分享
2014/11/07 Python
提升Python程序运行效率的6个方法
2015/03/31 Python
编写Python脚本把sqlAlchemy对象转换成dict的教程
2015/05/29 Python
python如何在终端里面显示一张图片
2016/08/17 Python
python 字符串常用函数详解
2019/09/11 Python
基于python实现ROC曲线绘制广场解析
2020/06/28 Python
网络编程中设计并发服务器,使用多进程与多线程,请问有什么区别?
2016/03/27 面试题
竞选体育委员演讲稿
2014/04/26 职场文书
校庆口号
2014/06/20 职场文书
关于环保的活动方案
2014/08/25 职场文书
领导党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
预备党员群众路线教育实践活动思想汇报2014
2014/10/25 职场文书
租车协议书范本2014
2014/11/17 职场文书
2014年人事行政工作总结
2014/12/03 职场文书
安全主题班会教案
2015/08/12 职场文书
2019财务管理制度最新范本!
2019/07/09 职场文书