我希望传递一个 servlet 变量 myVar,它被传递到 JSP 页面,并将它传递给 JavaScript。 JavaScript 是包含在 JSP 页面中的外部 javascript。

我有一个调用 JavaScript 函数的按钮,但我无法通过 servlet 传递任何传递到 JSP 页面的变量。该按钮不是表单的一部分。

我试过在 JavaScript 中调用一个函数:

var x = '<%=myVar%>'; 

var x = '${myVar}'; 

var x = '<%= (String)request.getParameter("myVar") %>'; 

但是,x 始终是我输入的字符串。

我没有使用 AJAX 或 JQuery。有什么想法吗?

示例代码是一个简化版本:(所以按钮实际上是一个下拉菜单,当我更改值时调用 js,但是,我希望在 changeCLass 中调用不属于下拉菜单的其他变量)

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 $(其他变量}

但输出应该是: 1 个测试

请您参考如下方法:

这不起作用,因为服务器不处理您的 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(外部.js):

    function changeClass(newVarX) { 
        var newVarId = newVarX.value; 
        alert(newVarId + " " + tID); 
    } 
    
  • 同时处理 JavaScript 文件。您可以为 JavaScript 使用 JSP 文件并应用正确的内容类型:

    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 --> 注意,它也是一个 JSP 文件,但内容类型设置为文本/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); 
    } 
    


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!