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插件。
2.将COOKIE写入文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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的页面代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
COOKIE本质上是一个txt文本,因此只能够存入字符串,对象通常要序列化之后才能存入COOKIE,而取的时候要反序列才又能得到对象。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $( 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的库文件
使用方法
新添加一个会话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不能用……..}});