Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jsp方法在javascript方法中运行不正常_Java_Javascript_Jsp - Fatal编程技术网

jsp方法在javascript方法中运行不正常

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

在我的jsp页面中 我有一个像这样的jsp按钮

     <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方法吗?as
NK123
:表明jsp中的java代码不正确,所以t尝试将代码移动到servlet或bean(简单java类)。在调用任何方法之前,您需要将其定义或访问到您调用它的位置。因此,我建议将JSP代码移动到servlet。另外,对于您获得的空值,请确保您将对象添加到会话中,并且您正在使用同一会话访问这些变量。我可以在servlet中调用JSP页面的方法吗更好的是,在servlet中定义jsp方法并将结果返回给jsp。我可以在servlet中调用jsp页面的方法吗?更好的是,在servlet中定义jsp方法并将结果返回给jsp。