JavaScript问题,SetCookie和ReadCookie问题(在线等)

zhoujing19891020 2010-11-29 08:15:00
<script type="text/javascript">

function SetCookie(usernamevalue,pswvalue,nDays){
var today=new Date();
var expire=new Date();
if(nDays==null||nDays==0) nDays=1;
expire.setTime(today.getTime()+3600000*24*nDays);
document.cookie=escape(usernamevalue+";"+pswvalue)+";expires="+expire.toGMTString();
}


function ReadCookie(v){ //value为usernamevalue+";"+pswvalue
var theCookie=""+document.cookie;
alert(theCookie);
var ind=theCookie.indexOf(v);
alert(ind);
if(ind==-1||cookiename=="")
return "";
return unescape(theCookie.substring(ind,ind+v.length));
}

function init(){
var a=222;
var b=333;
SetCookie(a,b,7);
var ind=ReadCookie(a+";"+b);
alert(ind);
}
</script>
...全文
509 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
不訴離傷 2010-11-30
  • 打赏
  • 举报
回复
我不是写给你了吗,在本地调试了一遍,改好了啊,空值是因为你索引查找的时候,V值没有编码造成的
function ReadCookie(v)函数中
v=escape(v);这样在编码一次,就不会找不到了。
zhoujing19891020 2010-11-30
  • 打赏
  • 举报
回复
我看迟了,等我看到的时候我明白了,就没看了,谢谢了
zhoujing19891020 2010-11-29
  • 打赏
  • 举报
回复
function init(){
var a=222;
var b=333;
SetCookie(a,b,7);
var ind=ReadCookie(a+";"+b);
alert(ind); //返回的是空值,为什么是空值啊?应该不是的啊
}


把“222;333;expires=……"存进Cookie中,但是读时ReadCookie("222;333")返回空值,你可以运行看看,不应该返回空值的啊,请高手帮忙!
zhoujing19891020 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wuyq11 的回复:]
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……
[/Quote]

5楼这位大哥,我的问题就是:把“222;333;expires=……"存进Cookie中,但是读时ReadCookie("222;333")返回空值,你可以运行看看,不应该返回空值的啊,请高手帮忙!
zhoujing19891020 2010-11-29
  • 打赏
  • 举报
回复
我把“222;333;expires=。。。"存进Cookie中,但是读时ReadCookie("222;333")返回空值,不应该返回空值的啊,不知道为啥!
whb147 2010-11-29
  • 打赏
  • 举报
回复
楼上的几位写得很详细了
wuyq11 2010-11-29
  • 打赏
  • 举报
回复
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();
}
function getCookie(name)
{
var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
if(arr != null) return unescape(arr[2]); return null;
}

指定过期时间:

var myDate = new Date();
myDate.setFullYear(2010, 7, 10);
$.cookie("singleKey", "", "singleKey-value", { expires: myDate, secure: false }) 1天后过期:
var time = Date();$.cookie("singleKey", "", "singleKey-value", { expires: 1, path: "/", secure: false }) 现在什么问题
wwfgu00ing 2010-11-29
  • 打赏
  • 举报
回复
  String.prototype.Trim = function()
{
return this.replace(/^\s+/g,"").replace(/\s+$/g,"");
}

function JSCookie()
{
this.GetCookie = function(key)
{
var cookie = document.cookie;
var cookieArray = cookie.split(';');
var getvalue = "";
for(var i = 0;i<cookieArray.length;i++)
{

if(cookieArray[i].Trim().substr(0,key.length) == key)
{
getvalue = cookieArray[i].Trim().substr(key.length + 1);
break;
}
}

return getvalue;
};
this.GetChild = function(cookiekey,childkey)
{
var child = this.GetCookie(cookiekey);
var childs = child.split('&');
var getvalue = "";

for(var i = 0;i < childs.length;i++)
{
if(childs[i].Trim().substr(0,childkey.length) == childkey)
{
getvalue = childs[i].Trim().substr(childkey.length + 1);
break;
}
}
return getvalue;
};
this.SetCookie = function(key,value,expire,domain,path)
{
var cookie = "";
if(key != null && value != null)
cookie += key + "=" + value + ";";
if(expire != null)
cookie += "expires=" + expire.toGMTString() + ";";
if(domain != null)
cookie += "domain=" + domain + ";";
if(path != null)
cookie += "path=" + path + ";";
document.cookie = cookie;
};
this.Expire = function(key)
{
expire_time = new Date();
expire_time.setFullYear(expire_time.getFullYear() - 1);
var cookie = " " + key + "=e;expires=" + expire_time + ";"
document.cookie = cookie;
}
}


用法:
一、设置cookie
var cookie = new JSCookie();
//普通设置
cookie.SetCookie("key1","val1");
不訴離傷 2010-11-29
  • 打赏
  • 举报
回复
v=escape(v);
缺少这一步,还有里面有个cookiename应该是ind吧
不訴離傷 2010-11-29
  • 打赏
  • 举报
回复

function SetCookie(usernamevalue,pswvalue,nDays){
var today=new Date();
var expire=new Date();
if(nDays==null||nDays==0) nDays=1;
expire.setTime(today.getTime()+3600000*24*nDays);
document.cookie=escape(usernamevalue+";"+pswvalue)+";expires="+expire.toGMTString();
}


function ReadCookie(v){ //value为usernamevalue+";"+pswvalue
v=escape(v);
var theCookie=""+document.cookie;
alert(theCookie);
var ind=theCookie.indexOf(v);
alert(ind);
if(ind==-1||ind=="")
return "";
return unescape(theCookie.substring(ind,ind+v.length));
}

function init(){
var a=222;
var b=333;
SetCookie(a,b,7);
var ind=ReadCookie(a+";"+b);
alert(ind);
}
deoing 2010-11-29
  • 打赏
  • 举报
回复
把问题描述出来,方便帮助解决啦。

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧