0

JavaScript Cookie をグローバル変数として使用する際に問題があります。基本的に、属性 prev を使用して Cookie を設定し、jsp ページに値を格納しました。

次に、別の jsp ページで、値を取得しようとします。しかし、私は値を取得しません。私はいつも間違った値を取得しました。

2 つの 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 を設定しているようですが、ページ間で値を転送していないようです。何が起こるか知ってもいいですか?

さらに手がかりが必要な場合は、さらに質問をしてください。

4

2 に答える 2

0

;path=/すべてのページでアクセスするには、Cookie にパスを設定する必要があると思います。

document.cookie = c_name + "=" + c_value+";path=/";
于 2012-10-04T10:49:11.327 に答える
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;
}

インターネットで見つけたコードをコピー/貼り付けしないことを強く検討してください。関連情報は順調です

于 2012-10-04T10:50:17.903 に答える