我在a.html页面的javascript里设置了cookie,在a.html里用:
SetCookie("test","testvalue")
alert(GetCookei("test"))  //这儿他弹出来testvalue可我在b页面的javascript里alert(GetCookei("test")) 弹出的确是null
为什么呢. 调用的函数是网上通用代码如下:
function GetCookieVal(offset)
//获得Cookie解码后的值
{
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
function SetCookie(name, value)
//设定Cookie值
{
var expdate = new Date();
var argv = SetCookie.arguments;
var argc = SetCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
var path = (argc > 3) ? argv[3] : null;
var domain = (argc > 4) ? argv[4] : null;
var secure = (argc > 5) ? argv[5] : false;
if(expires!=null) expdate.setTime(expdate.getTime() + ( expires * 1000 ));
document.cookie = name + "=" + escape (value) +((expires == null) ? "" : ("; expires="+ expdate.toGMTString()))
+((path == null) ? "" : ("; path=" + path)) +((domain == null) ? "" : ("; domain=" + domain))
+((secure == true) ? "; secure" : "");
}
function DelCookie(name)
//删除Cookie
{
var exp = new Date();
exp.setTime (exp.getTime() - 1);
var cval = GetCookie (name);
document.cookie = name + "=" + cval + "; expires="+ exp.toGMTString();
}
function GetCookie(name)
//获得Cookie的原始值
{
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen)
{
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return GetCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}

解决方案 »

  1.   

    cookie是有时效的,这样设置试试:SetCookie("test","testvalue", new Date(new Date().getTime() + 1 * 24 * 60 * 60 * 1000));
      

  2.   

     SetCookie这个函数没有设置第三个参数.他怎么接受这个参数啊.new Date(new Date().getTime() + 1 * 24 * 60 * 60 * 1000)
      

  3.   

    var expires = (argc > 2) ? argv[2] : null;
    这句嘛。测试后行就可以了。记得结贴
      

  4.   

    还是没有取到.郁闷啊.
    这是cookie里的值
    cart
    cart1
    localhost/prolist/
    1088
    3987717248
    30005587
    4124558608
    29999552
    *
    chanpin
    chanpin1
    localhost/prolist/
    1088
    3987717248
    30005587
    4124558608
    29999552
    *
    可在b.html就是取不到.郁闷
    b.html里用的是alert(GetCookie("cart")) 结果还是null
      

  5.   

    放到同一路径下测试一下就知道了。本机和站点都试试浏览器是不允许跨域访问cookie的。
      

  6.   

    cookie设置后,子目录可以访问该cookie撒
    上级目录访问不到啊
    如/test/html/a.html  设置了cookie  /test/html/b.html或者 /test/html/XX/b.html可以访问撒
    但是/test/b.html不可以访问撒if(expires!=null) expdate.setTime(expdate.getTime() + ( expires * 1000 ));
    这个东西的意思是说多长时间过期撒, 你设置个10  就是10秒过期撒     这中情况可可能出现撒  
    最好设置长点来测试 如: expdate = 30*24*60*60 (30天过期)
      

  7.   

    我结构是这样的.
    a.html写cookie 路径在根目录下的test文件夹底下
    b读取cookie b在根目录下.
    这要怎么改呢.
      

  8.   


    // ***********************
    // cookie操作//
    // *********************
    function addCookie(objName,objValue){//添加cookie
    //alert("key:"+objName+" value:"+objValue);
      var str = objName + "=" + escape(objValue);
      document.cookie = str;
    }  function delCookie(name){//为了删除指定名称的cookie,可以将其过期时间设定为一个过去的时间
      var date = new Date();
      date.setTime(date.getTime() - 10000);
      document.cookie = name + "=a; expires=" + date.toGMTString();
     }
      function getCookieByKey(objName){//获取指定名称的cookie的值
      var arrStr = document.cookie.split("; ");
      for(var i = 0;i < arrStr.length;i ++){
       var temp = arrStr[i].split("=");
       if(temp[0] == objName) return unescape(temp[1]);
      } 
     }
      function exitCookie(){//判断cookie是否有值
      var str = document.cookie;
      if(str == ""){
       return false;
      }
     return true;
      }
      function getAllCookies(){//查询cookie中所有
      return document.cookie;
      
      }用我这代码试试  我自己用过的  感觉比你那个简单明了哦  呵呵 
      

  9.   

    自己解决
    在下面函数里加一句
    var path="/"
    function SetCookie(name, value)
    //设定Cookie值
    {
    var expdate = new Date();
    var argv = SetCookie.arguments;
    var argc = SetCookie.arguments.length;
    var expires = (argc > 2) ? argv[2] : null;
    var path = (argc > 3) ? argv[3] : null;
    var domain = (argc > 4) ? argv[4] : null;
    var secure = (argc > 5) ? argv[5] : false;
    var path="/"
    if(expires!=null) expdate.setTime(expdate.getTime() + ( expires * 1000 ));
    document.cookie = name + "=" + escape (value) +((expires == null) ? "" : ("; expires="+ expdate.toGMTString()))
    +((path == null) ? "" : ("; path=" + path)) +((domain == null) ? "" : ("; domain=" + domain))
    +((secure == true) ? "; secure" : "");
    }
      

  10.   

    http://jhjhjhjh