2012-10-04 130 views
0

我在使用JavaScript cookies作爲全局變量時遇到問題。基本上我已經使用屬性prev設置cookie以在jsp頁面上存儲值。使用JavaScript Cookie作爲全局變量

然後在另一個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,但不能跨頁面傳輸值。我可以知道會發生什麼嗎?

如果您需要更多線索,請提示我提出更多問題。

回答

0

我認爲你需要在cookie中設置路徑;path=/才能在所有頁面中訪問它。

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

哦!讓我試試這個.. – Ferrino

0

根據RFC2109§4.3.1中,一個cookie 默認生成的Set-Cookie響應,直到但不包括該請求的URL路徑的「路徑」最右/

這意味着你錯過; PATH=/從您的Cookie設置功能:

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; 
} 

想想看,你在互聯網上找到的強烈不復制/粘貼代碼。 相關資料很好

+0

先生,所以我只需要添加一個路徑= /來解決問題? :) – Ferrino

+0

@Ferrino - 和分號(;) – geocar