在做高校云平台成绩系统的时候,利用js设置cookie,再在后台获取cookie的过程中有一些小小的插曲。
1. Cookie的设置
<span style="font-family:Microsoft YaHei;font-size:14px;"><strong>//---------setCookie ;path=/";加上此句话便可以访问整个目录的了
function setCookie(name, value) {
//cookie的相关设置以及超时时间的设计
var days = 0.03;
var exp = new Date();
exp.setTime(exp.getTime() + days * 24 * 60 * 60 * 1000);
document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString() + ";path=/";
}
</strong></span>
此时进行相关的cookie设置,我们知道页面的重定向后Request请求时无法在新的页面中进行获取的,也就是重定向的页面是取不到之前的Request中的数据。但是cookie是可以被共享的。
<span style="font-family:Microsoft YaHei;font-size:14px;"><strong>//为了跳转页面能够拿到当前的值,故而用cookie进行保存
setCookie("temporaryClassId", temporaryClassId);
setCookie("teacherId", teacherId);
setCookie("type", type);
setCookie("year", year);
</strong></span>
2. 解析上述的设置中的参数
当上面的cookie设置完毕之后,发现在后台取的时候发生了乱码
<span style="font-family:Microsoft YaHei;font-size:14px;"><strong>//获取cookie的值
//根据参数获取班级id
HttpCookie cookieId = System.Web.HttpContext.Current.Request.Cookies.Get("year");
//得到的是乱码
//string yearId = cookieId.Value;
//利用cookie进行数据的保存,这样可以便于即使跨不同的方法也是可以得到的,
//js利用escape对数据进行加密,但是数字是不加密的,对于汉字那么出现的就是乱码,需要解密
//HttpUtility.UrlDecode就是解密使用的,获取到学年
string yearId = HttpUtility.UrlDecode(cookieId.Value);</strong></span>
Ø escape
js利用escape对数据进行加密,但是数字是不加密的,对于汉字那么出现的就是乱码,需要解密,HttpUtility.UrlDecode就是解密使用的,当然也是可以利用un escape函数实现解密操作的。
Ø path=/
在用JS存取Cookie的时候,发现在不同的目录下,调用同一个js方法来存储Cookie,到别的目录取不出或取出的值是不对的,原因可能是存储的路径不对或者是没有指定,导致的结果是在不同的目录进行存储,就会出现不同的结果,为了统一我们可以将路径进行指定,path=/,path就是指定了相应的路径,/就是根目录,也就是这个目录下的所有的页面都是可以取到cookie的值的。
Ø name和value
cookie是以键值对的形式进行存储的,设置的时候我们需要设置key同样需要设置value,取值的时候,我们可以根据cookie的name获取到cookie,进而根据其value属性得到其值。
3. 小结
学习的时候就会发现,看似很小的东西,其中蕴含的东西是那么的多,所有知识都是宝藏,只要挖掘,潜力无限。