关于js读取cookie

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于js读取cookie相关的知识,希望对你有一定的参考价值。

我想在页面加载的时候读取cookie,如果有这个cook就跳转到另一个页面,没有就停留在这个页面,怎样用js实现这种效果。
麻烦哪位高手指点一下,谢谢了。

window.onload = function GetCookie()
var CookieStr = document.cookie;
//获取你写的cookie【cookie内容如:CookieInfo=Name=GTweb&Version=2.0】
var GetName = CookieStr.indexOf("Name") + 5; //获取到cookie中 Name= 的位置
var mark = CookieStr.indexOf("&"); //获取到cookie中符号的&的位置
if (CookieStr.substring(GetName, mark) != "GTweb")
//判断cookie中"Name="和"&"之间的字符串是否等于GTweb,如果不等于则跳转到百度的首页,等于那就没任何操作
window.location = "http://www.baidu.com";


参考技术A 在.net里面,写到客户端的时候先把Cookies的值 UrlEncode一下
在js里面读出来的时候,先用 unescape 反解码一下

---------.NET
System.Web.HttpCookie cUName = new System.Web.HttpCookie("userName", Server.UrlEncode(user.username));
---------JS
userId=unescape(arr[1]);

-----------
Server是个服务器对象。
如果你不在Page里面使用的话,可以用
System.Web.HttpUnility.UrlEncode 来代替

至于那个英文的,因为英文本身就不存在编码问题。

关于编码和解码的问题,不妨多尝试尝试。必要时手动看一下Cookies里面的内容判断是哪个阶段出的问题。
参考技术B function setCookie(name, value, expire)
window.document.cookie = name + "=" + escape(value) + ((expire == null) ? "" : ("; expires=" + expire.toGMTString()));

function getCookie(Name)
var search = Name + "=";
if (window.document.cookie.length > 0) // if there are any cookies
offset = window.document.cookie.indexOf(search);
if (offset != -1) // if cookie exists
offset += search.length;
// set index of beginning of value
end = window.document.cookie.indexOf(";", offset)
// set index of end of cookie value
if (end == -1)
end = window.document.cookie.length;
return unescape(window.document.cookie.substring(offset, end));


return null;

function register(name)
var today = new Date();
var expires = new Date();
expires.setTime(today.getTime() + 1000 * 60 * 60 * 2);
setCookie("ItDoor", name, expires);


function openWin(URL)
var cookie = getCookie("ItDoor");
if (cookie != null)
return;

window.location.href = URL;
参考技术C <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312" />
<title>cookie处理函数练习(为我所写,非我所想:改善面向对象)</title>
<script language="javascript" type="text/javascript">
function addCookie(objName,objValue,objHours)//添加cookie
var str = objName + "=" + escape(objValue);
if(objHours > 0)//为0时不设定过期时间,浏览器关闭时cookie自动消失
var date = new Date();
var ms = objHours*3600*1000;
date.setTime(date.getTime() + ms);
str += "; expires=" + date.toGMTString();

document.cookie = str;
alert("添加cookie成功");


function getCookie(objName)//获取指定名称的cookie的值
var arrStr = document.cookie.split("; ");
for(var i = 0;i < arrStr.length;i ++)
var temp = arrStr[i].split("=");
if(temp[0] == objName) return unescape(temp[1]);



function delCookie(name)//为了删除指定名称的cookie,可以将其过期时间设定为一个过去的时间
var date = new Date();
date.setTime(date.getTime() - 10000);
document.cookie = name + "=a; expires=" + date.toGMTString();


function allCookie()//读取所有保存的cookie字符串
var str = document.cookie;
if(str == "")
str = "没有保存任何cookie";

alert(str);


function $(m,n)
return document.forms[m].elements[n].value;


function add_()
var cookie_name = $("myform","cookie_name");
var cookie_value = $("myform","cookie_value");
var cookie_expireHours = $("myform","cookie_expiresHours");
addCookie(cookie_name,cookie_value,cookie_expireHours);


function get_()
var cookie_name = $("myform","cookie_name");
var cookie_value = getCookie(cookie_name);
alert(cookie_value);


function del_()
var cookie_name = $("myform","cookie_name");
delCookie(cookie_name);
alert("删除成功");

</script>

</head>
<body>
<form name="myform">
<div><label for="cookie_name">名称</label><input type="text" name="cookie_name" /></div>
<div><label for="cookie_value">值</lable><input type="text" name="cookie_value" /></div>
<div><label for="cookie_expireHours">多少个小时过期</lable><input type="text" name="cookie_expiresHours" /></div>
<div>
<input type="button" value="添加该cookie" onclick="add_()" />
<input type="button" value="读取所有cookie" onclick="allCookie()" />
<input type="button" value="读取该名称cookie" onclick="get_()" />
<input type="button" value="删除该名称cookie" onclick="del_()" />
</div>
</form>
<hr />
</body>
</html>

JS设置cookie读取cookie删除cookie

Js操作Cookie总结(设置,读取,删除),工作中经常会用到的哦!下面是详细代码,如有错误,请留言指正!

JavaScript是运行在客户端的脚本,因此一般是不能够设置Session的,因为Session是运行在服务器端的。

而cookie是运行在客户端的,所以可以用JS来设置cookie.

假设有这样一种情况,在某个用例流程中,由A页面跳至B页面,若在A页面中采用JS用变量temp保存了某一变量的值,在B页面的时候,同样需要使用JS来引用temp的变量值,对于JS中的全局变量或者静态变量的生命周期是有限的,当发生页面跳转或者页面关闭的时候,这些变量的值会重新载入,即没有达到保存的效果。解决这个问题的最好的方案是采用cookie来保存该变量的值,那么如何来设置和读取cookie呢?

首先需要稍微了解一下cookie的结构,简单地说:cookie是以键值对的形式保存的,即key=value的格式。各个cookie之间一般是以“;”分隔。

JS设置cookie:

假设在A页面中要保存变量username的值("jack")到cookie中,key值为name,则相应的JS代码为:

 

复制代码 代码如下:

document.cookie="name="+username;

 

JS读取cookie:

假设cookie中存储的内容为:name=jack;password=123

则在B页面中获取变量username的值的JS代码如下:

1
2
3
4
5
6
7
8
9
10
var username=document.cookie.split(";")[0].split("=")[1];
//JS操作cookies方法!
//写cookies
function setCookie(name,value)
{
var Days = 30;
var exp = new Date();
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}

读取cookies

1
2
3
4
5
6
7
8
function getCookie(name)
{
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
}

删除cookies

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
35
36
37
38
39
40
41
42
43
44
function delCookie(name)
{
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null)
document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}
//使用示例
setCookie("name","hayden");
alert(getCookie("name"));
//如果需要设定自定义过期时间
//那么把上面的setCookie 函数换成下面两个函数就ok;
//程序代码
function setCookie(name,value,time)
{
var strsec = getsec(time);
var exp = new Date();
exp.setTime(exp.getTime() + strsec*1);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
function getsec(str)
{
alert(str);
var str1=str.substring(1,str.length)*1;
var str2=str.substring(0,1);
if (str2=="s")
{
return str1*1000;
}
else if (str2=="h")
{
return str1*60*60*1000;
}
else if (str2=="d")
{
return str1*24*60*60*1000;
}
}
//这是有设定过期时间的使用示例:
//s20是代表20秒
//h是指小时,如12小时则是:h12
//d是天数,30天则:d30
setCookie("name","hayden","s20");
 


以上是关于关于js读取cookie的主要内容,如果未能解决你的问题,请参考以下文章

JS设置cookie读取cookie删除cookie(转)

JS操作Cookie写入和读取实例代码

js读取cookie信息

JS设置cookie读取cookie删除cookie

用 JS 设置 cookie,用 PHP 问题读取

js设置和读取cookie