使用JavaScript函数内的JavaScript变量调用Java函数
问题描述:
我需要帮助。我需要在Java类中调用Java函数“getLocCountByWhId()”;这个Java函数在for循环中的JavaScript中被调用。我需要将JavaScript变量作为参数传递给此函数“getLocCountByWhId()”。我一直在努力工作一周,阅读大量网站以获得一些指导,但我一直无法解决问题。预先感谢您的帮助。代码如下列出:使用JavaScript函数内的JavaScript变量调用Java函数
<script language="JavaScript">
<!--
function onCreatePO()
{
<%long jspAllocId = alloc.getId();%>;
var recItemId = ""; // Local variable for item id.
var recWhId = ""; // Local variable for warehouse id.
for (var i=0, j=document.what_if_summary.elements.length; i<j; i++)
{
var recStr = document.what_if_summary.elements[i].value;
var splitStr = new Array();
splitStr = recStr.split('^');
recItemId = splitStr[1]; // Get the field value for Item_ID.
recWhId = splitStr[2]; // Get the field value for Warehouse_ID.
// Get a database connection with global 'conn' object and retrieve store count.
<%AfsGetVDSCountByWarehouseBean.setConnection(conn);%>;
// The below assignment from JavaScript variable to JSP variable do not work
// because of a second JavaScript tag. How can I get around this ?
//<% String jspItemId = "<script>document.writeln(recItemId)</script>"; %>
//<% String jspWhId = "<script>document.writeln(recWhId)</script>"; %>
currentStoreCount = <%= AfsGetVDSCountByWarehouseBean.getLocCountByWhId(jspAllocId, jspItemId, jspWhId)%>;
}
}
//-->
</script>
// I get this example of assigning Javascript to JSP variable but I got double tag problem.
<script>
var v="Roseindia";
</script>
<% String st="<script>document.writeln(v)</script>";
out.println("value="+st); %>
答
你所要做的是不可能的,(对不起!)反映了一个基本的误解如何服务器端代码,例如JSP(或ASP,PHP等)作品。
JSP页面基本上是运行在Web服务器上的Java servlet ,它们动态生成网页并将其返回给浏览器。生成的网页可能包含HTML,CSS,JavaScript等,但对于Java代码来说,所有这些都只是文本。 Java/JSP代码无法理解或与JavaScript交互,因为JavaScript不会在Web服务器上运行,它只是将更多文本作为响应的一部分发送回浏览器。
当浏览器得到响应时,它将显示网页并执行任何JavaScript。
更多阅读(你在RoseIndia网站阅读我不会把太多的信心):
http://www.ibm.com/developerworks/java/tutorials/j-introjsp/
http://www.oracle.com/technetwork/articles/javase/servlets-jsp-140445.html
从 “AndrewHac”:谢谢你为你的答案。有没有其他的方法可以用来调用我的Java类“getStoreCount(JS1,JS2,JS3)”,JS1,2,3是JavaScript?我需要在这个“getStoreCount()”Java函数中调用SQL SELECT语句。我在互联网上读到,你可以使用request.getParameter()将JS var传递给JSP var,我可以使用它吗?提前再次感谢您。 – AndrewHac
如果在浏览器中运行的代码需要从Web服务器获取数据,有两种常用的方法:(1)在表单中提交客户端数据,让服务器处理它并返回一个新页面给客户端(从用户的角度来看,这意味着页面刷新),在这种情况下,您可能会将JS变量中的值存储在隐藏的表单字段中,以便在JSP中使用'request.getParameter()'来获取值; (2)使用Ajax,在这种情况下,您的JS可以提交请求而不导航到新页面 - 这里不适合对Ajax的解释。阅读上面的JSP教程。 – nnnnnn