jsp方法在javascript方法中运行不正常
在我的jsp页面中 我有一个像这样的jsp按钮jsp方法在javascript方法中运行不正常,java,javascript,jsp,Java,Javascript,Jsp,在我的jsp页面中 我有一个像这样的jsp按钮 <input class="submit_button" type="submit" name="Payment" value="Payment" style="position: absolute; left: 350px; top: 130px;" onclick="javascript:payment();"> <script> function paym
<input class="submit_button" type="submit" name="Payment" value="Payment"
style="position: absolute; left: 350px; top: 130px;"
onclick="javascript:payment();">
<script>
function payment(){
alert('Payment done successfully...');
<%
callProcedure(); // calls the procedure
%>
</script>
我有onclick javascript函数,它调用jsp方法“callProcedure()”,如下所示
<input class="submit_button" type="submit" name="Payment" value="Payment"
style="position: absolute; left: 350px; top: 130px;"
onclick="javascript:payment();">
<script>
function payment(){
alert('Payment done successfully...');
<%
callProcedure(); // calls the procedure
%>
</script>
功能支付(){
警报(“付款成功完成…”);
jsp方法callProcedure()调用oracle过程如下
<%! void callProcedure() {
CallableStatement cst = null;
Connection conn = null;
try {
DBDataSource dbDataSource = new DBDataSource();
conn = dbDataSource.makeConnection();
conn.setAutoCommit(false);
String insertStoreProc = "{call
p_webservice_test(?,?,?,?,?,?,?,?,?,?,?,?,?,?)}";
cst = conn.prepareCall(insertStoreProc);
cst.setString(1, TransID);
cst.setString(2, RemitNo);
cst.setString(3, senderFName + senderMName + senderLName);
cst.setString(4, RFName + RMName + RLName);
cst.setString(5, RAddr);
cst.setString(6, RPh);
cst.setString(7, Relshp);
cst.setString(8, tDate.toString());
cst.setString(9, PayCur);
cst.setBigDecimal(10, paymentAmt);
cst.setString(11, Pcode);
cst.registerOutParameter(12, Types.VARCHAR);
cst.executeUpdate();
conn.commit();
} catch (SQLException e) {
System.out.println("Error:::" + e.getMessage());
} finally {
if (cst != null) {
try {
cst.close();
} catch (Exception ex) {
System.out.println("Error:" + ex.getMessage());
}
}
}
}
%>
在这里,我的问题是jsp方法“callProcedure()”在单击按钮之前或在执行javascript方法之前执行。确切的问题是什么以及这个问题的解决方案。请尽快回复
提前感谢…在加载页面之前,所有JSP都在服务器上运行。您看到的是JSP页面的输出。因此,您无法在javascript事件上调用JSP方法。 在本例中,jsp方法在服务器上执行,结果显示给您 您可以将
callProcedure()
方法的代码放入某个servlet中,然后使用输入按钮将表单提交给servlet,servlet将调用callProcedure()
方法并在页面上显示结果
还有一件事我还没有看到或听说过您在文章中指定的JSP按钮。在加载页面之前,所有JSP都在服务器上运行。您看到的是JSP页面的输出。因此,您无法在javascript事件中调用JSP方法。 在本例中,jsp方法在服务器上执行,结果显示给您 您可以将
callProcedure()
方法的代码放入某个servlet中,然后使用输入按钮将表单提交给servlet,servlet将调用callProcedure()
方法并在页面上显示结果
还有一件事我没有看到或听说过关于JSP按钮的内容,正如您在文章中指定的那样。避免在javascript中直接调用方法重定向到servlet,并调用您的callProcedure()方法
我的建议是用jsp编写java代码不是一个好的做法。避免javascript中的直接调用方法重定向到servlet并调用您的callProcedure()方法
我的建议是用jsp编写java代码不是一个好的做法。我的建议是通过单击按钮调用servlet。在该servlet中,调用您的过程,并通过会话将结果(如果存在任何结果)返回到同一页面 将
提交
按钮更改为仅按钮
<input class="submit_button" type="button" name="Payment"
value="Payment"
style="position: absolute; left: 350px; top: 130px;"
onclick="javascript:payment();">
javascript函数如下所示:-
<script language="javascript">
function payment(){
document.formname.action="<%=request.getContextPath()%>/servletpath/myservlet";
document.formname.submit();
}
</script>
功能支付(){
document.formname.action=“/servletpath/myservlet”;
document.formname.submit();
}
希望它能对您有所帮助。我的建议是单击按钮调用servlet。在该servlet中,调用您的过程,并按会话将结果(如果存在任何结果)返回到同一页面 将
提交
按钮更改为仅按钮
<input class="submit_button" type="button" name="Payment"
value="Payment"
style="position: absolute; left: 350px; top: 130px;"
onclick="javascript:payment();">
javascript函数如下所示:-
<script language="javascript">
function payment(){
document.formname.action="<%=request.getContextPath()%>/servletpath/myservlet";
document.formname.submit();
}
</script>
功能支付(){
document.formname.action=“/servletpath/myservlet”;
document.formname.submit();
}
希望它能对您有所帮助。所有JSP都在服务器上运行,因此您不能在javascript事件上调用JSP方法。我应该怎么做才能在JSP按钮单击时调用JSP方法?请看我编辑的答案。所有JSP都在服务器上运行,因此您不能在javascript事件上调用JSP方法。我应该怎么做才能在JSP按钮单击时调用JSP方法?请看一看看看我编辑过的答案。非常感谢。但是这个过程中使用的jsp页面的值(比如TransID,relignno)可以吗是否传递给servlet?@Suniel:如果这些属性对于每个用户都是唯一的,那么您可以将它们存储为会话属性,然后servlet可以从会话中获取这些属性。我尝试过,但它给出了空值。我可以在servlet中调用jsp页面的java方法吗?as
NK123
:表明jsp中的java代码不正确,所以t尝试将代码移动到servlet或bean(简单java类)。在调用任何方法之前,您需要将其定义或访问到您调用它的位置。因此,我建议将JSP代码移动到servlet。另外,对于您获得的空值,请确保您将对象添加到会话中,并且使用相同的会话访问这些变量。非常感谢。但是JSP页面的值可以使用吗程序中的d(如TransID、汇款编号)是否传递给servlet?@Suniel:如果这些属性对于每个用户都是唯一的,那么您可以将它们存储为会话属性,然后servlet可以从会话中获取这些属性。我尝试过,但它给出了空值。我可以在servlet中调用jsp页面的java方法吗?asNK123
:表明jsp中的java代码不正确,所以t尝试将代码移动到servlet或bean(简单java类)。在调用任何方法之前,您需要将其定义或访问到您调用它的位置。因此,我建议将JSP代码移动到servlet。另外,对于您获得的空值,请确保您将对象添加到会话中,并且您正在使用同一会话访问这些变量。我可以在servlet中调用JSP页面的方法吗更好的是,在servlet中定义jsp方法并将结果返回给jsp。我可以在servlet中调用jsp页面的方法吗?更好的是,在servlet中定义jsp方法并将结果返回给jsp。