使用JavaScript Cookie作为全局变量

时间:2012-10-04 10:40:33

标签: javascript jsp

我使用JavaScript Cookie作为全局变量时遇到问题。基本上我已经使用属性prev设置cookie以在jsp页面上存储值。

然后在另一个jsp页面上,我将尝试获取该值。但是我没有得到这个价值。我总是得错了。

两个jsp页面是abc.jsp和xyz.jsp。两个jsp页面都有<%@ include file ='cookies.jsp'%>

这是cookies.jsp中的内容。它与W3school示例的代码相同。

<script>
/*Code For Setting Cookies*/
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 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 checkCookie()
{
    var x=getCookie("prev");
    if (x!=null) //cookie is set
      {
        //do nothing
      }
    else 
      {
        setCookie("prev",0,365); //set to null
      }
} //end of code for setting cookies
</script>

最重要的是,我尝试使用getCookie()和setCookie()。它似乎在页面上本地设置cookie,但不跨页面传输值。我可以知道会发生什么吗?

如果您需要更多线索,请提示我更多问题。

2 个答案:

答案 0 :(得分:0)

我认为你需要在cookie中设置路径;path=/以在所有页面中访问它。

document.cookie = c_name + "=" + c_value+";path=/";

答案 1 :(得分:0)

根据RFC2109§4.3.1,cookie 的“路径”默认为生成Set-Cookie响应的请求URL的路径,最多但不包括右侧-most /

这意味着您在Cookie设置功能中缺少; PATH=/

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())
                                + "; path=/";
    document.cookie=c_name + "=" + c_value;
}

强烈考虑不要复制/粘贴您在Internet上找到的代码。 相关信息很好