编程论坛's Archiver

xufengtang 发表于 2008-4-23 16:38

求助 在线等 javascript读写cookie

function setcookie()
{
    debugger;
        CookieDate=new Date();
        CookieDate.setTime(CookieDate.getTime()+10*24*3600*1000);
    writecookie("Id","xufengtang",CookieDate);
}

function writecookie(name,value,expires)
{
        var expString=((expires==null)?"":(";expries="+expires.toGMTString()));
        alert(name+"="+escape(value)+expString);
        document.cookie=name+"="+escape(value)+expString;
        alert(unescape(document.cookie));
}

能写,也能读,但是游览器关闭后,就没有了,当然C:\Documents and Settings\username\Cookies 也找不到该cookie文件,请问要怎样才能写入本地文件里面呢?

[[it] 本帖最后由 xufengtang 于 2008-4-24 09:11 编辑 [/it]]

xufengtang 发表于 2008-4-27 17:15

有人知道吗,先自己顶下

kingyar 发表于 2008-4-27 19:20

按照道理,这样的做法是没有问题的。由于我没有使用过javascript设置cookie,刚才做了一个测试:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Untitled Page</title>
   
    <script language="javascript">
        function setCookie(name, value, expires)
        {
            var cookie = name + "=" + encodeURIComponent(value);
            
            if (expires)
            {
                cookie += "; expires=" + expires.toGMTString();
            }            
            
            document.cookie = cookie;
        }
        function getCookie(name)
        {
            var reg = new RegExp("(?:; )?" + name + "=([^;]*);?");
            if (reg.test(document.cookie))
            {
                return decodeURIComponent(RegExp["$1"]);
            }
            else
            {
                return null;
            }
        }
        
        function testSetCookie()
        {
            var expires = new Date((new Date()).getTime() + 60 * 60 * 24 * 360 * 1000);
            setCookie("name", "kingyar", expires);
            alert("setCookie : ok");
        }
        function testGetCookie()
        {
            alert(getCookie("name"));
        }
    </script>
</head>
<body>
<a href="javascript:testSetCookie();">test setCookie</a><br>
<a href="javascript:testGetCookie();">test getCookie</a>
</body>
</html>

分别在IE6, FireFox2下测试,先设置cookie, 然后读取,关闭浏览器等待一小会儿,打开页面直接读取,都是可以读取到第一次设置的cookie的。

如果这样做还有问题,我就不知道原因了。

makebest 发表于 2008-4-27 21:04

读取COOKIE是这样子的

function getcook(nm)
{
        var allck, oneck, i;
        allck = document.cookie.split("; ");
        for(i=0;i<allck.length;i++)
        {
                oneck = allck[i].split("=");
                if (oneck.length>=2 && oneck[0]==nm )
                {
                        return oneck[1];
                }
        }
        return (targettxt[0]);
}
function setcook(nm,vl)
{
        var d = new Date();
        d.setDate( d.getDate()+5 );
        document.cookie = nm + "=" + vl + ";expires=" + d.toGMTString();
        return;
}

xufengtang 发表于 2008-4-28 08:59

2楼的朋友谢谢,你的代码可以,我再试试。。。。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.