Cookie没有被读取

时间:2012-11-18 16:27:03

标签: javascript cookies

我有以下功能来设置和获取cookie,我测试了本地主机上的代码,它似乎正在工作,但是当我把它放在服务器上时却没有。我可以检查浏览器上的cookie,但是当我尝试使用function getCookies()读取它时,它不起作用。

问题:

  • 我是否错误地设置了Cookie?
  • 为什么我在浏览器上看到cookie而不是实用?
  • 我读错了饼干吗?

代码:

<script type="text/javascript"><!--

function getCookie(c_name)
{
var i,x,y,ARRcookies=document.cookie.split(";");
alert(ARRcookies);
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 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 readCookie(){
  alert("here");
  var domain = checkCookie("domain");
  var tld= checkCookie("tld");
  alert(domain+" "+tld);
}

window.onload(readCookie());
// --></script>

更新: readCookie函数内的警报显示“undefined”,该值应该是值。当我尝试打印ARRcookies时,它会显示所有的cookie,但我设置的是'domain'和'tld'。我可以在浏览器的cookie列表中看到cookies'domain'和'tld'。

1 个答案:

答案 0 :(得分:0)

用于连接readCookie功能的代码如下:

 
window.onload(readCookie());

如果将代码分成两行,可能更容易看到:

var cookie = readCookie();
window.onload(cookie);

首先调用readCookie(一旦从服务器加载JavaScript,之前已初始化完整的document)。

readCookie返回后,其结果将传递给方法window.onload

这会导致一些问题:

  1. window对象没有onload方法。它有一个onload事件,您可以注册

  2. 您可能不想立即调用readCookie,而是希望onload调用它。

  3. 你可以通过像这样注册它来完成这个(如Pointy评论的那样):

    window.onload = readCookie;
    

    因此,您可以设置window.onload事件来执行readCookie功能。在那个阶段,cookie将可用。