① 用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了。