很多网站、博客都采用生成技术把网页生成html静态页面了,以利于搜索引擎的索引排名,减轻服务器负担。静态页面由于其稳定性快速性,的确给SE、用户及站长带来了方便。但有时,需要记住用户的信息,如用户留下评论后,下一次再来,就要记住该用户的信息,不必再次输入。      这对用户来说,可以提高他们的归属感,熟悉感。如何实现呢?      首先,我们需要在用户提交评论后,给客户端赋予几个相关的cookies值,这个很简单,直接在评论提交页面进行赋值就可以了,asp下的cookies简单赋值方式采用下面的这样的语句: response.cookies("abcd")("username")="name"
response.cookies("abcd")("username").expires=Date+30response.cookies("abcd")("usertype")="type"
response.cookies("abcd")("usertype").expires=Date+30     通过以上asp程序中的cookies赋值,可以成功在用户客户端写入用户的cookies信息。    现在的问题是:如何在静态页html读取这个cookies,并且显示在用户面前。因为是生成了html,我们无法再利用asp程序读取这个cookies,需要通过js读取这个cookies,然后输出在指定位置,比如页面顶端一行
    
    cookies带主键和子键,如何读取上面的两个cookies    试了好多都不可以,对js不是很在行,望高手给个例子,谢谢

解决方案 »

  1.   

    静态你只能采取js读取。并且读取这种格式比较麻烦,改成
    response.cookies("username")="name"
    response.cookies("username").expires=Date+30response.cookies("usertype")="type"
    response.cookies("usertype").expires=Date+30则相对简单
    alert("username")function getCookie(c_name)
    {
    if (document.cookie.length>0)
      {
      c_start=document.cookie.indexOf(c_name + "=");
      if (c_start!=-1)
        {
        c_start=c_start + c_name.length+1;
        c_end=document.cookie.indexOf(";",c_start);
        if (c_end==-1) c_end=document.cookie.length;
        return unescape(document.cookie.substring(c_start,c_end));
        }
      }
    return "";
    }
      

  2.   

      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;
        }
    }
      

  3.   

    直接用js,代码需要写很多,很繁琐,如果考虑用jquery提供的操作cookies的插件的话就很简单啦。
    获取cookies: var _cookie = $.cookie("st_username");
    设置cookies: $.cookie("st_username", "value");
      

  4.   

    看下 JS document.cookie 是什么值,然后按照这取 就可以了
      

  5.   

    用script标签来加载动态页就行了,读取cookie的值输出成js代码的格式就可以在静态页中使用了
      

  6.   

    谢谢各位
    一楼、二楼的方法稍候我试试,但是我的cookie必须是带有主键和子键的,这个不好改了,必须是response.cookies("abcd")("username")="name" 这样的,不好改成单值的了。三楼:js我都不熟悉,jquery更是一头雾水
    4楼:目前我用的方法就是用script标签来加载动态页来实现读取cookie显示结果现在就是想用JS来,对JS不大懂,ajax更是摸不着门啊
      

  7.   


    var Tools={}
    Tools.setCookie = function (name, value) {//写入cookie
        if (value == 'undefined') return
        var argv = Comment.setCookie.arguments;
        var argc = Comment.setCookie.arguments.length;
        var expires;
        var timeSpan = (argc > 2) ? argv[2] : null;
        if (timeSpan != null) {
            expires = new Date();
            expires.setTime(new Date().getTime() + timeSpan);
        }
        var path = "/";
        var domain = "aaa.com";
        var secure = false;
        document.cookie = name + "=" + escape(value) + ((!expires) ? "" : (";expires=" + expires.toGMTString())) + (";path=" + path) + (";domain=" + domain) + ((secure == true) ? ";secure" : "");
    }
    Tools.getCookie = function (name) {//取得cookie
        var returnvalue = "";
        var search = name + "=";
        var reg = new RegExp("(^|(?=;)|\\b)" + search);    if (document.cookie.length > 0) {
            var offset = document.cookie.search(reg);
            var end;
            if (offset != -1) {
                offset += search.length;
                end = document.cookie.indexOf(";", offset);
                if (end == -1)
                    end = document.cookie.length;
                returnvalue = unescape(document.cookie.substring(offset, end));
                if (returnvalue.indexOf("&") != -1) {
                    end = document.cookie.indexOf("&", offset);
                    returnvalue = unescape(document.cookie.substring(offset, end));
                }
            }
        }
        return returnvalue;
    }
      

  8.   

    问题解决了,用script嵌套asp页面搞定的js读cookies还是没弄懂,试了N多遍,最终还是放弃我发现,如果输出的内容不是很复杂,html页面嵌套动态页面还挺方便的