5

我创建了一个 Django 网站,需要一个 cookie 来存储和从网站的任何部分读取。它的 javascript 在我需要它的每个部分中,但由于某种原因,cookie 本身是为每个页面单独存储的。例如,如果 cookie 在一个页面上等于“设置”,则它可以在另一个页面上未定义。这是我用来创建、获取和读取 cookie 的代码(当按下每个页面上的特定按钮时,会调用“createBannerCookie()”方法)-

<script type="text/javascript">
$(document).ready(function() {
  $('#banner').hide();
  checkBannerCookie();
});

function createBannerCookie() 
{
  $('#banner').hide();
  var exdate=new Date();
  exdate.setDate(exdate.getDate() + 3);
  var c_value=escape("set") + ((exdate==null) ? "" : "; expires="+exdate.toUTCString());
  document.cookie='banner=' + c_value;
}

function getCookie(c_name)
{
  var i,x,y,ARRcookies=document.cookie.split(";");
  for (i=0;i<ARRcookies.length;i++)
  {
    x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
    y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
    x=x.replace(/^\s+|\s+$/g,"");
    if (x==c_name)
    {
      return unescape(y);
    }
  }
}

function checkBannerCookie()
{
  var banner=getCookie("banner");
  if (banner!=null && banner!="")
  {
    $('#banner').hide();
  }
  else 
  {
    $('#banner').show();
  }
}
</script>

有什么建议么?

4

2 回答 2

16

默认情况下,只有与最初创建 cookie 的网页位于同一目录中的网页才能访问 cookie。请尝试添加“path=/”选项。例如

document.cookie =
  'propertyName=test; path=/'
于 2012-08-08T16:39:26.447 回答
0

西蒙,

我认为您的问题是您的 cookie 的到期日期。在我看来,您将它们设置为在创建后 3 毫秒过期。

在你的“createBannerCookie”函数中尝试这样的事情(而不是 w3schools 版本):

function createBannerCookie() 
{
  $('#banner').hide();
  var exdate=new Date();
  exdate.setTime(exdate.getTime()+(3*24*60*60*1000)); // the 3 in that math is your days
  var c_value=escape("set") + ((exdate==null) ? "" : "; expires="+exdate.toUTCString());
  document.cookie='banner=' + c_value;
}

参考: http ://www.quirksmode.org/js/cookies.html

于 2012-08-08T16:33:38.360 回答