2011-12-21 43 views
0

我在javascript中創建了一個cookie,但是當我嘗試在java中獲取值時,我得到了以前的值 - 這個cookie沒有刷新。有什麼方法可以刷新cookie,以便我能得到正確的值? 這是JavaScript:如何獲得在javascript中創建的cookie的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中的cookie獲取的價值:

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

我想了解這裏的流程。首先你的客戶端從服務器獲得一個響應(頁面)。然後客戶端運行一些JavaScript來更改存儲在客戶端上的cookie。當客戶端從服務器請求下一頁時,它不會發送新的修改過的cookie,而是發送舊的原始cookie? – 2011-12-21 12:56:44

回答

0

您的Cookie在01-JAN-70 00:00到期: 01格林威治標準時間,也就是1月,1日,70日,即1940年前。這是服務器端不接收它的原因。檢查您創建到期日期的方式。

+0

只有在調用del_cookie時,cookie纔會過期。標準刪除腳本。 – mplungjan 2011-12-21 13:11:48

0

刪除舊的餅乾

的document.cookie = ckName + 「=」 + 「;過期=星期四,01-JAN-70 00:00:01 GMT 」;

如果(document.cookie.length> 0){ c_start = document.cookie.indexOf(ckName + 「=」);如果(c_start!= -1){c0start = 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餅乾();

如果希望所有cookie的名稱和值,迭代對(INT索引= 0;索引< cookies.length;索引++)陣列

{ckName = 餅乾[指數] .getName (); ckValue = cookies [index] .getValue(); }

相關問題