我希望传递一个传递给JSP页面的servlet变量myVar,并将其传递给JavaScript。 JavaScript是一个包含在JSP页面中的外部JavaScript。
我有一个调用JavaScript函数的按钮,但是我无法通过servlet传递任何传递给JSP页面的变量。该按钮不是表单的一部分。
我尝试用JavaScript中的函数调用:
var x = '<%=myVar%>';
和
var x = '${myVar}';
AND
var x = '<%= (String)request.getParameter("myVar") %>';
但是,x
始终是我输入的字符串。
我没有使用AJAX或JQuery。有什么想法吗?
示例代码是一个简化版本:(因此按钮实际上是一个在我更改值时调用js的下拉列表,但是,我希望在changeCLass中调用不属于下拉列表的其他变量)< / p>
Servlet方:
request.setAttribute("otherVars","tests");
JSP:
<script type="text/javascript" src="external.js"></script>
<select name="vars" id="myVars" onchange="changeClass(this)">
<option value='1' selected="selected">1</option>
</select>
包含在JSP中的external.js:
function changeClass(newVarX) {
var newVarId =newVarX.value;
var tID = '${otherVars}';
alert(newVarId + " " + tID);
}
输出: 1 $(otherVars}
但输出应为: 1次测试
答案 0 :(得分:3)
这不起作用,因为服务器不处理您的JavaScript文件。可能的解决方案是:
在JSP文件中全局声明变量tID
。
JSP:
<script type="text/javascript" src="external.js"></script>
<script type="text/javascript">
var tID = '${otherVars}';
</script>
<select name="vars" id="myVars" onchange="changeClass(this)">
<option value='1' selected="selected">1</option>
</select>
JavaScript(external.js):
function changeClass(newVarX) {
var newVarId = newVarX.value;
alert(newVarId + " " + tID);
}
还要处理JavaScript文件。您可以将JavaScript文件用于JavaScript并应用正确的内容类型:
JSP:
<script type="text/javascript" src="external.jsp"></script>
<select name="vars" id="myVars" onchange="changeClass(this)">
<option value='1' selected="selected">1</option>
</select>
JavaScript(external.jsp - &gt;注意,它也是一个JSP文件,但内容类型设置为text / javascript):
<%@ page language="java" contentType="text/javascript; charset=UTF-8" pageEncoding="UTF-8"%>
function changeClass(newVarX) {
var newVarId = newVarX.value;
var tID = '${otherVars}';
alert(newVarId + " " + tID);
}