Javascript的cookie和asp是不是一样的

来源:百度知道 编辑:UC知道 时间:2024/05/25 06:45:41
我做了个购物的用Javascript本地操作cookie减轻服务器压力
在提交信息时候是用服务器来操作cookie的,最后用response.cookies("xx")来个删除cookie,但是清除后在Javascript的cookie上却还存在

这是Javascript写入cookie的
function setCookie(arg_CookieName,arg_CookieValue){
var arg_CookieExpireDays=1;
var todayDate=new Date();
todayDate.setDate(todayDate.getDate()+arg_CookieExpireDays);
document.cookie=arg_CookieName+"="+arg_CookieValue+";path=/;expires="+todayDate.toGMTString()+";";

打个比喻:
setCookie("cart","id:1;name:啊啊啊;")
提交后我用response.cookies("cart")=""
清空购物车
但是在购物车内却还是有id:1;name:啊啊啊;
用response.cookies("cart")=""后
在去购买商品放入购物车内,到提交页面用request.cookies("cart")查看却是空的。。。。。。。。。。。。。。
购买商品后,把商品的信息用Javascript的cookie写入,查看购物车也是用Javascript的cookie输出内容

在提交购物车后储存到数据库,用response.cookies清空,回到商品页面,在购物车内还显示刚才购物的东西。

然后去提交页面却提示购物车内没有任何商品。

=======

由于 ASP 是在服务器端执行,而 JS 是在客户端执行,所以程序是先执行 ASP 代码,再执行 JS 代码
查看却是空的原因大概如此

辨别一个cookie是根据name+path+domain来判断的
ASP里通过response.cookies("xx")删除的cookie没有指定path即path是asp程序所在的文件夹例如/user/
JS里通过setCookie设置的cookie指定的path是/,主意里边的代码:arg_CookieValue+";path=/;
所以ASP和JS操作的不是同一个cookie
为了不出现这种问题,最好保持一致性,在操作cookie的时候都指定path=/
改一下你的ASP为:
response.cookies("xx").path = '/';
然后再删除。

楼上的“ASP和JS操作的不是同一个cookie”纯属扯淡

先弄明白什么是cookie,见后面的附录
cookie保存在客户端,每次是服务器端从客户端取得cookie,所以JS和ASP操作的cookie本质上是同一个cookie,差别在于操作的方式不同。
JS直接读取本地的cookie进行操作。
而将客户端的cookie包装一下发送到服务器端后,asp才能拿到

附录:什么是cookie?
什么是Cookie(“小甜饼”)呢?简单来说,Cookie就是服务器暂存放在你的电脑里的资料(.txt格式的文本文件),好让服务器用来辨认你的计算机。当你在浏览网站的时候,Web服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择都记录下来。当下次你再访问同一个网站,Web服务器会先看看有没有它上次留下的Cookie资料,有的话,就会依据Cookie里的内容来判断使用者,送出特定的网页内容给你。

cookie有什么作用呢?现在上许多网站都用新用户注册这一项,有时注册了一下,等到下次再访问该站点时,会自动识别到你,并且向你问好,是不是觉得很亲切?当然这种作用只是表