![](/img/trans.png)
[英]Passing values from JavaScript function to a JSP scriplet and back
[英]getting error while passing value from javascript to scriplet in jsp
我有一个要求,我需要将值从Javascript传递到JSP中的Scriplet。 我知道javascript是在客户端执行的,而jsp是在服务器端执行的。我已经在网上搜索和搜索了很多,但是直到现在我仍然找不到我想要的解决方案。 JSP代码如下。 javascript和scriplet都在同一jsp中。
<script type="text/javascript">
var strUrl = window.location.href;
var aps = strUrl.toLowerCase().indexOf("values");
var modifiedString = strUrl.substring(aps+8);
var v = strUrl.indexOf(modifiedString);
document.write(v);
</script>
<%
String st="<script>document.writeln(v)</script>";
out.println("-----"+st);
int pareseValue = Integer.parseInt(st);
if(st.equals("0")){
out.println("test");
%>
<h1><div class="xyz">
<fmt:message>header.txt</fmt:message>
</div></h1>
<%
}else{
%>
<div class="pqr">
<fmt:message>header1.txt</fmt:message>
</div>
<%
}
%>
在上面的代码中,我试图将Javascript中的值传递给脚本。 但是,当我尝试解析该字符串并将其转换为int时,我遇到了NumberFormatException。 看起来变量st不是字符串类型。
String st="<script>document.writeln(v)</script>";
out.println("-----"+st);
int pareseValue = Integer.parseInt(st)
您能否让我知道上述代码有什么问题,以及如何解决我现在面临的问题。
感谢Vikeng
您不能将"<script>document.writeln(v)</script>"
解析为int的原因是因为它包含数字以外的字符。
即使看起来它包含<script>
标记-它仍然不是将执行或计算为数字的代码。 因为用引号引起来,所以它只是一个字符串。 因此, "<script>document.writeln(v)</script>"
在解析器中看起来与"tic/v)neiwtm>oprs<citdun.rtl(<rp>"
。
但是,这有点有争议,因为不幸的是,您无法将值传递给scriptlet。 这完全是单向的。
为了使您的页面与Java通信,您需要在请求一些处理程序的同时传递参数。
例如,您可以执行一些异步JavaScript:
var asyncHR = new XMLHttpRequest();
var URL = "https://www.yourserver.com/intparser?st=v";
asyncHR.open("GET", URL, true);
asyncHR.send();
然后,您的请求处理程序可以采用该参数st
,对其进行解析或进行任何所需的操作,修改模型-将这个新值添加为属性,然后从JavaScript中重新加载该页面。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.