java變量和javascript變量之間的傳遞示例
更新時(shí)間:2014年05月16日 17:01:43 作者:
用jsp做一個(gè)網(wǎng)站,其間涉及到j(luò)ava變量和javascript變量之間的互換,下文給出不錯(cuò)的解決方案,希望對(duì)大家有所幫助
最近在用jsp做一個(gè)網(wǎng)站,其間涉及到j(luò)ava變量和javascript變量之間的互換,雖然網(wǎng)上資料眾多,但是眾說紛紜,并且很多都是帶有誤導(dǎo)性,做了許多嘗試,終于比較清楚的搞懂了這個(gè)問題。通俗一點(diǎn)來講,就是說java代碼是運(yùn)行在服務(wù)器上的,返回的值只是靜態(tài)的存在于頁(yè)面,而javascript是腳本語言,是運(yùn)行在客戶端的!它們是兩種完全不同的語言,變量不能直接進(jìn)行交換,但是通過一定的方式,變量可以傳遞。
java變量傳遞給javascript變量,這個(gè)比較簡(jiǎn)單,就是平時(shí)的普通方法就好:
var cnt = <%=number%>;
注意別漏掉等號(hào)!這個(gè)沒什么問題。
javascript變量傳遞給Javab變量,這個(gè)稍微復(fù)雜一些,但是清楚了原理其實(shí)也很簡(jiǎn)單,這邊主要是通過表單提交以及表單元素來獲取和進(jìn)行操作:
<script language="javascript">
function button_click(cnt) {
++cnt;
document.submitForm.msg.value = cnt;
document.submitForm.submit();
}
</script>
<%
number = request.getParameter("msg");
if(number==null)
number="1";
RdData.setIndex(number);
RdData.readData();
out.println("<br />");
out.print(RdData.getIndex() + ".");
out.print(RdData.getTitle());
out.println("<br />");
out.println("A." + RdData.getStrA());
out.println("<br />");
out.print("B." + RdData.getStrB());
out.println("<br />");
out.print("C." + RdData.getStrC());
out.println("<br />");
out.print("D." + RdData.getStrD());
%>
<input name="index" type="text" value="<%=RdData.getIndex()%>" />
<input type="button" value="btn" name="bt" onclick="button_click(<%=number%>)">
<form name="submitForm">
<input type="hidden" name="msg" value=<%=RdData.getIndex()%>/>
</form>
特別注意表單和javascript代碼部分!通過表單的隱藏元素把數(shù)據(jù)庫(kù)取出來的一個(gè)數(shù)據(jù)傳給處理函數(shù),進(jìn)行相關(guān)操作后,提交表單,java代碼通過request.getParameter()獲取,就OK啦~~~其實(shí)當(dāng)時(shí)挺糾結(jié)的一個(gè)問題是變量不同步,因?yàn)槲乙獙?shí)現(xiàn)的功能是每點(diǎn)擊按鈕一次計(jì)數(shù)器加一并對(duì)數(shù)據(jù)庫(kù)進(jìn)行一次讀操作,如果計(jì)數(shù)器不一致就會(huì)直接導(dǎo)致讀取的順序問題,刷新頁(yè)面是可以解決問題,但是一直刷新也不是個(gè)好辦法。于是想到傳一個(gè)參數(shù)進(jìn)去,OK,好了
java變量傳遞給javascript變量,這個(gè)比較簡(jiǎn)單,就是平時(shí)的普通方法就好:
復(fù)制代碼 代碼如下:
var cnt = <%=number%>;
注意別漏掉等號(hào)!這個(gè)沒什么問題。
javascript變量傳遞給Javab變量,這個(gè)稍微復(fù)雜一些,但是清楚了原理其實(shí)也很簡(jiǎn)單,這邊主要是通過表單提交以及表單元素來獲取和進(jìn)行操作:
復(fù)制代碼 代碼如下:
<script language="javascript">
function button_click(cnt) {
++cnt;
document.submitForm.msg.value = cnt;
document.submitForm.submit();
}
</script>
復(fù)制代碼 代碼如下:
<%
number = request.getParameter("msg");
if(number==null)
number="1";
RdData.setIndex(number);
RdData.readData();
out.println("<br />");
out.print(RdData.getIndex() + ".");
out.print(RdData.getTitle());
out.println("<br />");
out.println("A." + RdData.getStrA());
out.println("<br />");
out.print("B." + RdData.getStrB());
out.println("<br />");
out.print("C." + RdData.getStrC());
out.println("<br />");
out.print("D." + RdData.getStrD());
%>
<input name="index" type="text" value="<%=RdData.getIndex()%>" />
<input type="button" value="btn" name="bt" onclick="button_click(<%=number%>)">
<form name="submitForm">
<input type="hidden" name="msg" value=<%=RdData.getIndex()%>/>
</form>
特別注意表單和javascript代碼部分!通過表單的隱藏元素把數(shù)據(jù)庫(kù)取出來的一個(gè)數(shù)據(jù)傳給處理函數(shù),進(jìn)行相關(guān)操作后,提交表單,java代碼通過request.getParameter()獲取,就OK啦~~~其實(shí)當(dāng)時(shí)挺糾結(jié)的一個(gè)問題是變量不同步,因?yàn)槲乙獙?shí)現(xiàn)的功能是每點(diǎn)擊按鈕一次計(jì)數(shù)器加一并對(duì)數(shù)據(jù)庫(kù)進(jìn)行一次讀操作,如果計(jì)數(shù)器不一致就會(huì)直接導(dǎo)致讀取的順序問題,刷新頁(yè)面是可以解決問題,但是一直刷新也不是個(gè)好辦法。于是想到傳一個(gè)參數(shù)進(jìn)去,OK,好了
相關(guān)文章
頁(yè)面自動(dòng)刷新,不用按回車鍵來提交數(shù)據(jù)!
頁(yè)面自動(dòng)刷新,不用按回車鍵來提交數(shù)據(jù)!...2006-10-10JSP基于JDBC的數(shù)據(jù)庫(kù)連接類實(shí)例
這篇文章主要介紹了JSP基于JDBC的數(shù)據(jù)庫(kù)連接類,以實(shí)例形式較為詳細(xì)的分析了JDBC連接數(shù)據(jù)庫(kù)的實(shí)現(xiàn)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-11-11寫一個(gè)對(duì)搜索引擎友好的文章SEO分頁(yè)類
寫一個(gè)對(duì)搜索引擎友好的文章SEO分頁(yè)類...2007-03-03JSP上傳圖片產(chǎn)生 java.io.IOException: Stream closed異常解決方法
在做jsp上傳圖片時(shí),把java代碼直接改成 jsp,上傳時(shí)產(chǎn)生異常,很是疑惑,于是搜索整理了一下解決方法,需要了解的朋友可以參考下2012-12-12