js与cookie的点点滴滴

本文介绍了如何使用JavaScript设置Cookie,并确保跨页面访问时的数据一致性。针对Cookie设置过程中的路径问题和乱码问题提供了具体解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  在做高校云平台成绩系统的时候,利用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.      小结

  学习的时候就会发现,看似很小的东西,其中蕴含的东西是那么的多,所有知识都是宝藏,只要挖掘,潜力无限。



评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值