将servlet变量传递给javascript

时间:2012-11-04 19:27:57

标签: javascript jsp variables servlets

我希望传递一个传递给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次测试

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);
    }