document.cookie的问题,大家帮忙看看

来源:百度知道 编辑:UC知道 时间:2024/06/24 14:37:25
<script language="jscript">
function SetCookie(sName, sValue)
{
date = new Date();
var str=sName+"="+escape(sValue)+";expires="+date.toGMTString();
str=str.replace("2007","2008");
alert(str);
document.cookie =str;
alert(document.cookie);
}
</script>
<input type="button" value="添加cookie"
onClick="SetCookie('bill','honey')">

请教大家,运行出的结果第一个alert弹出的是
bill=honey;expires=Thu, 26 Jul 2008 17:29:39 UTC
第二个alert弹出的是
bill=honey
我的问题是第一个弹出的是个字符串,而字符串的值又赋给了document.cookie,那么第二个弹出的应该也是和第一个一样的啊,为什么只有bill=honey,而expires=Thu, 26 Jul 2008 17:29:39 UTC就没有了呢?
希望有知道的朋友指导我一下,谢谢
如果如一楼朋友所讲,那什么时候可以使用
ALERT(DOCUMENT.COOKIE)显示出EXPIRES呢?
二楼的朋友,可能是我没了解清楚,但是用你的代码也不能在
ALERT(UNESCAPE(DOCUMENT.COOKIE))中显示
bill=honey,而expires=Thu, 26 Jul 2008 17:29:39 UTC 啊
而且ESCAPE在代码中只是针对了sV

这是escape编码问题。
(escape 方法返回一个包含了 charstring 内容的字符串值( Unicode 格式)。所有空格、标点、重音符号以及其他非 ASCII 字符都用 %xx 编码代替,其中 xx 等于表示该字符的十六进制数。例如,空格返回的是 "%20" 。


在调用documents.cookie的时候需要解码unescape。
你看看下面的代码 应该就了解了:
<script language="jscript">
function SetCookie(sName, sValue)
{
date = new Date();
var str=sName+"="+escape(sValue)+(";expires="+date.toGMTString());
str=str.replace("2007","2008");
alert(str);
document.cookie=str;
alert(document.cookie);
alert(unescape(document.cookie));
//alert(document.cookie);
}
</script>
<input type="button" value="添加cookie"
onClick="SetCookie('bill','honey')">

哦,我明白你的意思了,不显示是因为所有Cookie的expires(过期时间)都不能正常显示。这是因为浏览器返回给服务器的Cookie是不包含过期时间的,而服务器返回给浏览器的Cookie是包含过期时间的。过期时间只对客户端浏览器有意义,对服务器来说没有什么意义。

是啊,你的这个代码显示出honey是正确的啊,alert