日期:2014-05-16  浏览次数:20380 次

【紧急求助】js读写Cookie的问题!
问题:
js读写Cookie的问题!
Cookie读写函数:
JScript code
function writeCookie(name, value, hours)
{
  var expire = "";
  if(hours != null)
  {
    expire = new Date((new Date()).getTime() + hours * 3600000);
    expire = "; expires=" + expire.toGMTString();
  }
  document.cookie = name + "=" + escape(value) + expire;
}


function readCookie(name)
{
  var cookieValue = "";
  var search = name + "=";
  if(document.cookie.length > 0)
  { 
    offset = document.cookie.indexOf(search);
    if (offset != -1)
    { 
      offset += search.length;
      end = document.cookie.indexOf(";", offset);
      if (end == -1) end = document.cookie.length;
      cookieValue = unescape(document.cookie.substring(offset, end))
    }
  }
  return cookieValue;
}


我在页面A中写入Cookies
treeBiaoqianList="Cookie's Content";
writeCookie("treeBiaoqianList",str,24);
在页面B中无法读到
在"if (offset != -1)"停住了
应该是说Cookie不存在,是不是跨页面的问题?

高手支招!

------解决方案--------------------
Cookie读取的时候,可以设置path与domain

path属性用于指定那些文件夹下的页面可以访问
domain指定那个域的页面可以访问

如果直接在本机上运行html(即直接双击html文件运行),可能是path不同而导致无法访问

我用同一个页面测试了楼主的代码,是没有问题的
------解决方案--------------------
我在页面A中写入Cookies 
treeBiaoqianList="Cookie 's Content";
writeCookie("treeBiaoqianList",str,24); 在页面B中无法读到 
在"if (offset != -1)"停住了 
应该是说Cookie不存在,是不是跨页面的问题? 
==============================================
你读取cookie的时候是不是
readCookie("Cookie 's Content")???
还是
readCookie("treeBiaoqianList")???

你的代码是先给treeBiaoqianList赋值,然后才写的cookie,所以有点怀疑是你写cookie的时候不小心多写了两个引号
------解决方案--------------------
JScript code

//设置cookies 
function setCookie(name,value)
{
    var Days = 30;
    var exp  = new Date();    //new Date("December 31, 9998");
        exp.setTime(exp.getTime() + Days*24*60*60*1000);
        document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}

//取cookies
function getCookie(name)
{
    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
        if(arr=document.cookie.match(reg)) return unescape(arr[2]);
        else return null;
}

//删除cookies
function delCookie(name)
{
    var exp = new Date();
        exp.setTime(exp.getTime() - 1);
    var cval=getCookie(name);
        if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}

------解决方案--------------------

[JavaScript]Cookie详解(转)
Tag:JavaScript Cookie 
 
cookie概述

  假如利用一个不变的框架来存储购物栏数据,而商品显示页面是不断变化的,尽管这样能达到一个模拟全局变量的功能,但并不严谨。例如在导航框架页面内右击,单击快捷菜单中的【刷新】命令,则所有的JavaScript变量都会丢失。因此,要实现严格的跨页面全局变量,这种方式是不行的, JavaScript中的另一个机制:cookie,则可以达到真正全局变量的要求。

  cookie 是浏览器提供的一种机制,它将document对象的cookie属性提供给JavaScript。可以由JavaScript对其进行控制,而并不是 JavaScript本身的性质。cookie是存于用户硬盘的一个文件,这个文件通常对应于一个域名,当浏览器再次访问这个域名时,便使这个 cookie可用。因此,cookie可以跨越一个域名下的多个网页,但不能跨越多个域名使用。

  不同的浏览器对cookie的实现也不一样,但其性质是相同的。例如在Windows 2000以及Windows xp中,cookie文件存储于documents and settings\userName\cookie\文件夹下。通常的命名格式为:userName@domain.txt。

  cookie机制将信息存储于用户硬盘,因此可以作为全局变量,这是它最大的一个优点。它可以用于以下几种场合。

1.保存用户登录状态。例如将用户id存储于一个cookie内,这样当用户下次访问该页面时就不需要重新登录了,现在很多论坛和社区都提供这样的功能。cookie还可以设置过期时间,当超过时间期限后,cookie就会自动消失。因此,系统往往可以提示用户保持登录状态的时间:常见选项有一个月、三个月、一年等。

2.跟踪用户行为。例如一个天气预报网站,能够根据用户选择的地区显示当地的天气情况。如果每次都需要选择所在地是烦琐的,当利用了cookie后就会显得很人性化了,系统能够记住上一次访问的地区,当下次再打开该页面时,它就会自动显示上次用户所在地区的天气情况。因为一切都是在后台完成,所以这样的