我创建了一个Django网站,需要一个cookie来存储和从网站的任何部分读取。它的javascript在我需要它的每个部分,但由于某种原因,cookie本身单独存储每个页面。例如。如果cookie在一个页面上等于“set”,则可以在另一个页面上取消定义。这是我用来创建,获取和读取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>
有什么建议吗?
答案 0 :(得分:9)
默认情况下,cookie只能与最初创建cookie的网页位于同一目录中的网页访问。请尝试添加“path = /”选项。 e.g。
document.cookie =
'propertyName=test; path=/'
答案 1 :(得分: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;
}