use*_*546 6 javascript variables jsp servlets
我希望传递一个传递给JSP页面的servlet变量myVar,并将其传递给JavaScript.JavaScript是包含在JSP页面中的外部JavaScript.
我有一个调用JavaScript函数的按钮,但是我无法通过servlet传递任何传递给JSP页面的变量.该按钮不是表单的一部分.
我试过用JavaScript函数来调用:
var x = '<%=myVar%>';
Run Code Online (Sandbox Code Playgroud)
和
var x = '${myVar}';
Run Code Online (Sandbox Code Playgroud)
和
var x = '<%= (String)request.getParameter("myVar") %>';
Run Code Online (Sandbox Code Playgroud)
但是,x总是一串我输入的内容.
我没有使用AJAX或JQuery.有任何想法吗?
示例代码是一个简化版本:(因此按钮实际上是一个下拉,在我更改值时调用js,但是,我希望其他变量不属于下拉列表,在changeCLass中调用)
Servlet方面:
request.setAttribute("otherVars","tests");
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
JSP中包含的external.js:
function changeClass(newVarX) {
var newVarId =newVarX.value;
var tID = '${otherVars}';
alert(newVarId + " " + tID);
}
Run Code Online (Sandbox Code Playgroud)
输出:1 $(otherVars)
但输出应该是:1次测试
这不起作用,因为服务器不处理您的 JavaScript 文件。可能的解决方案是:
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>
Run Code Online (Sandbox Code Playgroud)
JavaScript(外部.js):
function changeClass(newVarX) {
var newVarId = newVarX.value;
alert(newVarId + " " + tID);
}
Run Code Online (Sandbox Code Playgroud)让 JavaScript 文件也被处理。您可以使用 JSP 文件作为 JavaScript 并应用正确的内容类型:
联合应用程序:
<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>
Run Code Online (Sandbox Code Playgroud)
JavaScript(external.jsp --> 请注意,它也是一个 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);
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
11863 次 |
| 最近记录: |