① 用js輸出jsp標簽
這個理論上是不可能的啊..因為js是靜態的...jsp會在你的頁面生成前就已經解析了. 即使你使用了ajax技術..也只能返回來的是html或xml..而不會返回jsp標簽的.
② 在jsp中如何使用js獲取<% %>動態添加的標簽對象
我們訪問一個jsp頁面時,運行簡單示意圖如下
先執行jsp程序 --- 》再執行HTML 和 javaScript
我看一下程序
<%
out.print("<div name=\"divPro\">");
out.print("</div>");
out.print("<div name=\"divPro\">");
out.print("</div>");
out.print("<div name=\"divPro\">");
out.print("</div>");
out.print("<div name=\"divPro\">");
out.print("</div>");
%>
這一段執行之後 頁面中多了 4行代碼
<div name="divPro"></div>
<div name="divPro"></div>
<div name="divPro"></div>
<div name="divPro"></div>
<script type="text/javascript">
function show(){
var names = document.getElementsByName("divPro");
alert(names);//顯示object說明確實取得對象了
alert(names.length);//這里卻顯示0說明names數組中沒有元素
}
</script>
這個時候 那就相當於 html+JavaScript 的交互了
這個不難了吧
③ 如何用JS調用某個JSP里<%%>塊語句
<%%>是JSP特有的標簽,是伺服器端腳本語言,不能顯示到瀏覽器也就是客戶端,js是瀏覽器端的腳本語言,所以客服端訪問伺服器的時候
<%%>塊語句執行後在將伺服器的運行結果返回到客戶端,最後你在瀏覽器端的js才會生效,兩種不同的腳本語言,而且不在一個地方運行,所以不存在說js調用這個塊語句,不要弄混了
④ 在js中可以引用jsp中的數據嗎
你好,
通常來說是可以的。我給你列舉兩種方法,你根據你的情況選擇適合你的吧。
方法一:將jsp中的變數輸出到html中的type為hidden的input中,js從input中去取值
<!--jsp頁面中的input元素-->
<inputtype="hidden"value="<%=serverData%>"id="J_ServerData">
<!--
當然,掛在某一個DOM元素的屬性上也是可以的
<divid="J_DataDiv"data-server-data="<%=serverData%>">頁面中的任意DOM節點</div>
-->
<script>
//JS中讀取jsp頁面中輸出到頁面中的值
varinp=document.getElementById('J_ServerData');
//如果是div
//varnode=document.getElementById('J_DataDiv');
//取值
varserverData=inp.value;
//如果是屬性
//varserverData=node.getAttribute('data-server-data');
console.log(serverData);
</script>
方法二:JS可以通過AJAX與服務端通信,只需服務端封裝一個JSP介面,前端即可取到服務端數據,以jQuery為例
$.ajax({
url:'server_addr/api.jsp',
type:'get',
success:function(data){
//data就是服務端(jsp)返回的數據
console.log(data);
}
});
大致就這么多,希望能解決你的疑惑,如有疑問可追問~
⑤ 我想在jsp頁面中用js獲取s:property中的value要怎麼辦
jsp頁面中用js獲取s:property中的value的做法是在js中利用單引號對界定s:property取值。如下:
var url = '<s:property value="#urlBack"/>'
1、jsp文件定義如下:
<tr>
<td height="6%"align="center">
<s:submit cssClass="button" key="common.initDelegate.label" align="center" theme="simple"/>
<s:url id="urlBack" action="myAction" includeParams="none" escapeAmp="false">
<s:param name="period.periodId" value="%{period.periodId}"></s:param>
</s:url>
<input type="button" onclick="javascript:cancel()" value="<s:text name="common.button.cancel"/>"/>
</td>
</tr>
2、js函數寫法如下:
function cancel() {
if (!isModified || (isModified && askConfirmCancel())) {
window.location.replace('<s:property value="#urlBack"/>');
}
}
這樣就是可以通過'<s:property value="#urlBack"/>'傳值給js函數 window.location.replace了。