大家好:
我在html中有3個button
按下去後會傳一個數值給JS
雖然JS,alert出來的值正確
但是JSP永遠只能存到else那行的值....
<nav class="nav navbar-default"  style="background-color:white;">
        <div class="container-fluid">
            <div class="collapse navbar-collapse" id="myNavbar">
             <ul class="nav navbar-nav navbar-right">
             <li>
<a class="btn btn-secondary dropdown-toggle" role="button" id="dropdownMenuLink" data-toggle="dropdown"> 語系
  </a>
  <div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
    <button id="bt1"  class="dropdown-item" value="1">中文</button>
    <button id="bt2"  class="dropdown-item" value="2">英文</button>
    <button id="bt3"  class="dropdown-item" value="3">簡體中文</button>
  </div>
        </li>  
             
                </ul>
            </div>
        </div>
    </nav> 
    
<%
  String lan="";
%>
<script type="text/javascript">
$("button").click(function() {
    var langu = $(this).val();
  
  if(langu==1){<%lan="zh";%>alert(langu);}
  
  else if(langu==2){<%lan="en";%>alert(langu);}
  
  else {<%lan="jp";%>alert(langu);}
  //alert都是正確的.....但lan一直錯
});
</script>
<%
  out.println(lan);//不管我按什麼,他都是jp...
%>
     
想問要怎麼改才能抓到正確值?
js 傳值給 jsp 要透過 post 或 get 的方式,不要亂用~![]()
<a href="/?lang=tw">中文</a>
<a href="/?lang=en">英文</a>
<a href="/?lang=cn">簡體中文</a>
<%= request.getParameter("lang") %>
                大大好:
<a href="/?lang=tw">中文</a>
這不是轉跳到另一頁的語法嗎?
我打上去後,他就轉跳到tomcat首頁....
那個...
我只是希望按下按鈕後值可以被記錄下來..
沒想要轉跳頁面
那個href連結,要換成你這個頁面的連結,才不會跳到首頁,你這個jsp頁面連結是什麼?
我這個頁面是head.jsp
所以應該是
<a href="head.jsp/?lang=tw">中文</a>
這樣嗎?
還是不行說..
對了,我這head.jsp是只有寫menu選單而已,這樣可以嗎?
我都用在其他頁面用
 $(document).ready(function () {
            $("#head1").load("../public/head.jsp");       
        });
來把這單頭導入所有網頁中...
是這樣,斜線不用了…
要讓所有頁面抓到,最簡單的方式,用session吧~
把lang存到session裡
<a href="head.jsp?lang=tw">中文</a>
<%= request.getParameter("lang") %>
                    恩恩,我就是打算取出值後用session
目前結果
<a href="head.jsp?lang=tw">中文</a>

以下我的程式碼:
head.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<body>
<nav class="nav navbar-default" >
        <div class="container-fluid">
    <div class="collapse navbar-collapse" id="myNavbar">
            
                <ul class="nav navbar-nav navbar-right">
                    
                   <li>
 
<a class="btn btn-secondary dropdown-toggle" role="button" id="dropdownMenuLink" data-toggle="dropdown">
    <span class="glyphicon glyphicon-globe"></span> 語系
  </a>
  <div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
   <a href="head.jsp?lang=tw">中文</a>
<a  href="head.jsp?lang=en">英文</a>
<a href="head.jsp?lang=cn">簡體中文</a>
  </div>
        </li>  </ul></div>
        </div>
    </nav> 
<%= request.getParameter("lang") %>
     
head.jsp會被所有網頁導入,以index.jsp為例
以下index.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">    
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <title>index</title>
    <script>
   $(document).ready(function () {
            $("#head1").load("../public/head.jsp");       
        });
    </script> 
    </head>
    <body>
<div id="head1"></div>
 <div class="container-fluid">
     <center><font color="blue" size="7">熱門產品</font></center>
</div>
    </body>
</html>
                    你要寫完整網址丫…![]()
<a href="/jsweb/jsp/head.jsp?lang=tw">中文</a>
                    他如果是用Google的翻譯API
我想只要建立一個cookie裡面存下目前選擇的語言
然後載入頁面JS去讀那個coookie做翻譯就行了...
恩恩,了解,抱歉,耍蠢了
<a href="/jfweb/public/head.jsp?lang=tw">中文</a>
我改成這樣,這是我的路徑
但是他會變成這樣
只剩下單頭,body都不見了
(是說head.jsp本來就只有單頭)
所以我是不是切換語言都一定要把他轉到特定頁面才行?
那要放你主頁面的連結才對,就是包住全部頁面的那個連結~
用Google的翻譯API,應該會翻譯的怪怪的~
https://www.arefly.com/add-google-translate-to-website/
我直接改成主頁了
<a   href="/jfweb/jsp/index.jsp?lang=tw">中文</a>

但值是null
還有,想問,除了跳回主畫面還有沒有其他方法呢?
例如我看英文版網頁
但是b.jsp的內容比較難,所以我就按翻成中文
但若是按個按鍵就跳回主畫面,而不是留再b.jsp的話
感覺會造成user麻煩...
我有試過用google
因為翻得太爛(我需要翻一些專有名詞),果斷放棄....
不是跳回主頁面,jsp 的include是這樣用的… 不是用js load...![]()
https://www.ibm.com/developerworks/cn/java/j-jsp04293/index.html
另一種方法是像微軟那樣
在同一個Domain下又分成好幾個不同的語言的網站
例如
英文https://docs.microsoft.com/en-us/
中文https://docs.microsoft.com/zh-tw/
日文https://docs.microsoft.com/ja-jp/
研究了很久,我可以順利的切換中/英文了
但是
假設我在login.jsp按英文翻譯
他還是會跳到index.jsp
我還要自己點login.jsp
才會看到英文
不是跳回主頁面,jsp 的include是這樣用的....
我看了還是不太懂如何按英文翻譯後
他還是保留在原來頁面....
head.jsp
<div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
<a class="dropdown-item"  href="/jfweb/jsp/index.jsp?lang=tw">中文</a></br>
 <a class="dropdown-item"  href="/jfweb/jsp/index.jsp?lang=en">英文</a></br>
    
  </div>
  
<%String lang2=request.getParameter("lang");
  session.setAttribute("lang", lang2);
   //response.setIntHeader("Refresh", 1);
%>
login.jsp
<%    Object lang=session.getAttribute("lang"); 
  String Lang="";
  if(lang!=null){Lang=lang.toString();}
  else{Lang="tw";} 
    <%@ include file="../public/head.jsp" %>
    
謝謝
不知道你是head_1 還是head? 你的b.jsp,有包括head.jsp嗎? 沒有當然沒辦法同時切換丫![]()
上面程式已改,造成混亂,抱歉....
那個,我的head.jsp通通都是用導入的
沒有和任何一頁面寫在一起,這樣可行嗎?
或是一定得寫一起呢?
因為你前後端搞錯了啊........<%%>區段是Server端(後端)一次執行完送出
你的按鈕是前端JS在跑的...
所以你最後lan才會是jp
你想做的事應該在前端就能達成了
你要變動的區塊用<div>包起來給一個id
例如目前是jp
<div id="lang">
jp
</div>
然後點按鈕時JS去改變那個區塊
JS改成這樣
$("button").click(function () {
    var langu = $(this).val();
    //console.log(langu);
    if (langu == 1) { 
        $('#lang').html('ch') 
    }
    else if (langu == 2) {
        $('#lang').html('eng') 
    }
    else { 
        $('#lang').html('jp') 
    } 
});