在 JSP 中将 JavaScript 变量分配给 Java 变量
Posted
技术标签:
【中文标题】在 JSP 中将 JavaScript 变量分配给 Java 变量【英文标题】:Assign JavaScript variable to Java Variable in JSP 【发布时间】:2012-01-06 06:57:03 【问题描述】:你好,
我正在尝试将 javascript 变量的值分配给 java 变量。但我不知道如何做到这一点?比如说我有这个:
<html>
<head>
<script type="text/javascript">
function return variable()
var a = "hello";
return a;
</script>
</head>
<body>
<%
//The java code
String b = //how do I get that javascript variable here?
%>
</body>
</html>
【问题讨论】:
如果您了解 jsp 的工作原理,您就会知道 java 部分在服务器端执行before
页面在浏览器中呈现。这意味着在任何 javascript 有机会执行时它已经执行了。所以你需要重新考虑你要在这里做什么。
可能重复:***.com/questions/1944330/…
How do I pass JavaScript values to Scriptlet in JSP?的可能重复
其实***.com/questions/11672500/…
老问题但是那些简单地说“你不能”的人都是错的,是的,你可以,这取决于你的环境,也许我正在使用 jsp、jsp 或其他东西,你为什么说“你不能”?有趣..
【参考方案1】:
我认为没有办法做到这一点,除非你在 URL 上传递 JavaScript var 的值,但这是一个丑陋的解决方法。
【讨论】:
【参考方案2】:Java 脚本在 Java 代码是服务器端的浏览器上播放,所以你不能简单地这样做。
您可以通过表单提交,或使用 URL 参数或使用 AJAX 调用将计算出的变量从 javascript 提交到服务器,然后您可以在服务器上使用它
HTML
<input type="hidden" id="hiddenField"/>
确保该字段位于<form>
下
Javascript
document.getElementById("hiddenField").value=yourCalculatedVariable;
在服务器上,您可以将其作为request
的一部分获得
【讨论】:
嗯,我明白了.. 因为总而言之,我正在尝试做的事情。在 JSP 中有一个 HTML 表单,并通过 onClick 事件触发 javascript 方法,然后返回一个变量。然后该变量可以与其余的表单输入值一起发送...所以没有办法做到这一点? 您可以在一些隐藏字段中设置它,然后您可以通过表单提交发送它。 类似这样的东西: ?【参考方案3】:您需要阅读有关 JSP 生命周期的内容。试试这个:http://en.wikipedia.org/wiki/File:JSPLife.png
JavaScript 在客户端上运行,但是为了更改 jsp,您需要访问服务器。这可以通过 Ajax (http://en.wikipedia.org/wiki/Ajax_%28programming%29) 完成。
这里是一些与 Ajax 相关的链接:http://www.openjs.com/articles/ajax_xmlhttp_using_post.php
http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first
【讨论】:
【参考方案4】:你不能这样做..因为jsp被编译并转换为html服务器端,而javascript是在客户端执行的。 您可以将值设置为隐藏的 html 元素并在请求中发送到 servlet,以防万一您想进一步使用
【讨论】:
啊,太好了,我可以做到,它仍然可以解决我的问题。所以我将像这样设置隐藏输入类型中的值: ? 是的,您是对的,您必须在方法本身中设置此元素的值并将该元素保留在表单中,以便在提交表单时将其添加到 url 中。【参考方案5】:因为 JavaScript 是客户端,而 JSP 是服务器端。
所以 Javascript 在到达浏览器之前不会执行, 但是 Java 在服务器上执行。 所以,Java 不知道 JavaScript 变量的值。
但是,您将 Java 变量的值分配给 JavaScript 变量。
【讨论】:
【参考方案6】:答案是你不能。 Java(在您的情况下为 JSP)是一种服务器端脚本语言,这意味着它在所有 javascript 代码之前编译和执行。您可以将 javascript 变量分配给 JSP 变量,但不能反过来。如果可能,您可以让变量出现在 QueryString 中或通过表单(通过隐藏字段)传递它,发布它并通过 JSP 以这种方式提取变量。但这需要重新提交页面。
希望这会有所帮助。
【讨论】:
【参考方案7】:JavaScript 在客户端触发,JSP 在服务器端。所以我可以说这是不可能的。
【讨论】:
以上是关于在 JSP 中将 JavaScript 变量分配给 Java 变量的主要内容,如果未能解决你的问题,请参考以下文章
为啥在Javascript中将一个对象分配给另一个变量也会改变初始对象[重复]
如何在 JSP 中将 JavaScript 值传递给 Scriptlet?