2011-12-21 14 views
0

私はjavascriptでクッキーを作成しましたが、javaで値を取得しようとすると前回の値が得られます。クッキーは更新されません。私は正しい値を得るために、クッキーをリフレッシュする方法はありますか?javascriptで作成されたクッキーのJava値を取得する方法は?

<script> 
    function setCookie(name,value,days) { 
     if (days) {  
      var date = new Date();  
      date.setTime(date.getTime()+(days*24*60*60*1000)); 
      var expires = "; expires="+date.toGMTString(); 
     } 
      else { 
      var expires = ""; 
      } 
      document.cookie = name+"="+value+expires+"; path=/"; 
      alert (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 del_cookie(name) { 
    document.cookie = name + 
    '=; expires=Thu, 01-Jan-70 00:00:01 GMT;'; 
    } 

    $j(document).ready(function(){ 
     // remove all click-events from header_nav_submenu 
     $j(".header_nav_submenu").unbind('click'); 
     $j(".header_nav_submenu").click(function(){ 
     var goHref = $j(this).attr('href'); 
     del_cookie("last_page_nav"); 
     alert(getCookie("last_page_nav")); 
     setCookie("last_page_nav", goHref.substring(7), 7); 
     alert(getCookie("last_page_nav")); 
    }); 
}); 
</script> 

、それは私がJavaでクッキーから値を取得しようとする方法である:

if(FriendlyURLUtil.getFriendlyURL(request.getServerName())==null){ 
      Cookie[] cookies = ((HttpServletRequest) request).getCookies(); 
      for(int i = 0; i < cookies.length; i++) { 
       if (cookies[i].getName().equals("last_page_nav")) { 
        System.out.println("The days " + cookies[i].getMaxAge()); 
        System.out.println("The cookie says " + cookies[i].getValue()); 
        ((HttpServletResponse) response).sendRedirect(cookies[i].getValue()); 
       } 
      } 

     } 
+0

ここでの流れを理解しようとしています。最初に、クライアントはサーバーから応答(ページ)を取得します。クライアントは、クライアントに保存されているCookieを変更するためにJavaScriptを実行します。クライアントがサーバーから次のページを要求すると、新しい変更されたCookieは送信されず、元の元のCookieが送信されます。 –

答えて

0

あなたのクッキーは01-JAN-70 00:00に有効期限が切れた:javascriptのです 01 GMT、すなわち1月1日、70 AC、すなわち1940年前。これがサーバー側が受信しない理由です。有効期限の作成方法を確認してください。

+0

del_cookieが呼び出された場合にのみクッキーが期限切れになります。標準の削除スクリプト。 – mplungjan

0

document.cookie = ckName + "=" +古いクッキーを削除 "; GMT 01-JAN-70午後12時00分01秒 、=木の有効期限が切れます"。

if(document.cookie.length> 0){ c_start = document.cookie.indexOf(ckName + "=");

if(c_start!= -1){ c_start = c_start + ckName.length + 1; c_end = document.cookie.indexOf( ";"、c_start); if(c_end == -1) c_end = document.cookie.length; return unescape(document.cookie.substring(c_start、c_end));あなたはHttpServletRequestの

クッキー[]クッキー=のrequest.getCookiesからクッキーを取得することができます

}
}();

あなたはすべてのクッキーの名前と値をしたい場合は、(int型のインデックス= 0;インデックス< cookies.length;インデックス++)のために、アレイ

を繰り返す{ckName = クッキー[インデックス] .getName (); ckValue =クッキー[インデックス] .getValue(); }

関連する問題