5

Django Webサイトを作成しましたが、Cookieを保存して、サイトのどの部分からでも読み取れるようにする必要があります。そのためのJavaScriptは、私が必要とするすべての部分にありますが、何らかの理由で、Cookie自体はページごとに個別に保存されます。たとえば、Cookieが1つのページで「設定」されている場合、別のページでは未定義にすることができます。これが私が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を作成したWebページと同じディレクトリ内のWebページにのみアクセスできます。「path=/」オプションを追加してみてください。例えば

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

シモン、

あなたの問題はあなたのクッキーの有効期限だと思います。作成後3ミリ秒で期限切れになるように設定しているように見えます。

(w3schoolsバージョンの代わりに)「createBannerCookie」関数で次のようなことを試してください。

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 に答える