Javascript:无法在所有HTML页面中读取Cookie

时间:2013-07-23 17:38:43

标签: javascript html cookies

我从W3Schools(http://www.w3schools.com/js/js_cookies.asp)复制并使用了getCookie和setCookie。以下是get和set的代码:

  function setCookie(c_name,value,exdays)
  {
    var exdate=new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
    document.cookie=c_name + "=" + c_value;
  }

  function getCookie(c_name)
  {
    var c_value = document.cookie;
    var c_start = c_value.indexOf(" " + c_name + "=");
    if (c_start == -1)
    {
      c_start = c_value.indexOf(c_name + "=");
    }
    if (c_start == -1)
    {
      c_value = null;
    }
    else
    {
      c_start = c_value.indexOf("=", c_start) + 1;
      var c_end = c_value.indexOf(";", c_start);
   if (c_end == -1)
   {
      c_end = c_value.length;
   }
      c_value = unescape(c_value.substring(c_start,c_end));
   }
      return c_value;
 }

我在prepareDrive.html页面中设置了cookie

 setCookie("pathName",path,365);
 setCookie("formatName",ifFormat,365);

然后我在startInstall.html页面中调用了get cookie,这是一个不同的HTML页面

 var path = getCookie("pathName");
 var ifFormat = getCookie("formatName");

但path和ifFormat都为null。但是,当我在prepareDrive.html中的console.log时,数据就在那里。谢谢 !!!这是我第一次在JS中使用cookie。我不想使用localstorage来存储数据。因为一些旧版本的浏览器不支持这个功能,对吧?

2 个答案:

答案 0 :(得分:3)

您需要为Cookie指定一个公共path。最简单的是指定域根目录:

var c_value=escape(value) + "; path=/" + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());

如果没有,document.cookiedefault to the current location.pathname,使Cookie仅对当前页面可用。

  

; path = path (例如,'/','/ mydir')如果未指定,则默认为当前文档位置的当前路径。


此外,我建议您查看MDN上的Cookie的“little framework”。

答案 1 :(得分:0)

如果您已经在使用jquery,可能需要考虑jquery插件:

https://github.com/jquery/plugins.jquery.com

这使得它非常简单。