
在 JS(JavaScript) *** 作cookies比较复杂,在 ASP 里面我们只需要知道 cookie 的名称、cookie 的值就行了,而 JS 里面,我们面对的是 cookie 的字符串,你自己编写这个字符串写入客户端,然后自己解析这个字符串。
一、从写 cookie 说起。
var the_date = new Date("December 31, 2020");
var expiresDate = the_datetoGMTString();
documentcookie = "userDefineCSS=" + escape(title) + "; expires=" + expiresDate;
第一句是日期对象;
第二句将日期格式转换成 GMT 格式;编者者: GMT 即格林威治标准时间,现在也称 UTC 即全球标准时间。
第三句是将 cookie 内容写入客户端。
其中 expires 是系统使用的,表示 cookie 的失效日期(也可以省略),expires 不可读。
escape 是对 cookie 值进行编码,这是为了处理中文、空格等而设立的。
二、取 cookie 是比较简单的。
function GetCSS()
{
var cookieStr = documentcookie; //取 cookie 字符串,由于 expires 不可读,所以 expires 将不会出现在 cookieStr 中。
if (cookieStr == "")
{
return "main1"; //没有取到 cookie 字符串,返回默认值
}
var cookieValue = cookieStrsplit("; "); //将各个 cookie 分隔开,并存为数组,多个 cookie 之间用分号加空隔隔开,不过前面我们只使用了一个 cookie,它的值与 expires 之间也是用分号加空格隔开的
var varName = "userDefineCSS";
var startPos = -1;
var endPos = -1;
for (var i=0; i<cookieValuelength; i++)
{
startPos = cookieValue[i]indexOf(varName);
if (startPos != 0)
{
continue; //当前 cookie 不是名称为 varName 的 cookie,判断下一个 cookie
}
startPos += varNamelength + 1; //当前 cookie 就是名称为 varName 的 cookie,由于有等号,所以 +1
endPos = cookieValue[i]length;
var css = unescape(cookieValue[i]substring(startPos, endPos));
return css;
}
return "main1";
}
windowonload
=
function
GetCookie()
{
var
CookieStr
=
documentcookie;
//获取你写的cookiecookie内容如:CookieInfo=Name=GTweb&Version=20
var
GetName
=
CookieStrindexOf("Name")
+
5;
//获取到cookie中
Name=
的位置
var
mark
=
CookieStrindexOf("&");
//获取到cookie中符号的&的位置
if
(CookieStrsubstring(GetName,
mark)
!=
"GTweb")
{
//判断cookie中"Name="和"&"之间的字符串是否等于GTweb,如果不等于则跳转到百度的首页,等于那就没任何 *** 作
windowlocation
=
">
cookie的写入和读取的方式是有所不同的,写入的时候可以用 documentcookie="abc=123"; 这样的形式,但是读取的时候,documentcookie是包含网页的全部cookie(如果网页是从别的页面跳转来的,还包括跳转前网页的cookie)以及后台服务器的session参数(比如登录状态什么的,当然是加密后的)等等,形式类似于下面这样:
ASPSESSIONIDASSQTACT=JAFJEDMAABBPKOGKCGEKEHID; admin=OK; wzid=13; codym=222; cuym0=0; cuym206=35; csdym=207; idym=206; cd=ym; abc=123
也就是说所有的cookie键值对是以"; "(分号加一个空格)分隔的,要想获得“abc”的值,就要先用"; "分割为数组,再遍历数组,把每个元素再用"="分割,然后再对比等号左边元素是否为"abc"来获得右边的值"123"。
但是,正常情况下documentcookiesplit("=")[1]也不应该是undefined啊,我估计你这个jsonobjToken是个空值,所以才会这样。你可以在赋值前先输出jsonobjToken看看是什么值。
cookie只能以字符串存储,而且有长度限制问题,一般长度就4000多点的字节。如果是比较大的对象序列化时长度是不够的,而且JS中复杂的对象是没法序列化的。如果只是想保存对象的几个属性,你完全不用保存整个对象,比如你要保存一个对象的"name"和"size"属性,你可以这样保存这样:"name:xxxx|size:xxxx",或者保存成JOSN格式:'{"name":"xxxx","size":"xxxx"}'。然后重新加载页面的时候,解析COOKIE字符串获取到里面的值,在对象初始化时将这些值赋值上去。
如果你只是简单的对象,类似这种:{name:"xxxx",size:xxxx},你可以直接转成JOSN格式保存
首先JS设置cookie:
假设在A页面中要保存变量username的值("jack")到cookie中,key值为name,则相应的JS代码为:
documentcookie="name="+username;
JS读取cookie:
var username=documentcookiesplit(";")[0]split("=")[1];
function setCookie(name,value)
{
var Days = 30;
var exp = new Date();
expsetTime(expgetTime() + Days2460601000);
documentcookie = name +"="+ escape (value) +";expires=" + exptoGMTString();
}
读取cookies
function getCookie(name)
{
var arr,reg=new RegExp("(^| )"+name+"=([^;])(;|$)");
if(arr=documentcookiematch(reg))
return unescape(arr[2]);
else
return null;
}
扩展资料服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在>
另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息。
判断是否为 undefined 需要加上 typeof(cookie_value)
function isName(){
var cookie_value = getCookie("bbb");
if(typeof(cookie_value)=="undefined"||cookie_value ==""){
//documentgetElementById('name_re')innerHTML='不存在或者空';
alert("不存在或者空");
}
else{
alert(cookie_value);
}
}
以上就是关于JS *** 作 cookies 的方法全部的内容,包括:JS *** 作 cookies 的方法、关于js读取cookie、新手对于JS保存、读取cookie的疑问。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)