大家好:
我在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')
}
});