Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.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
Java 在jsp中处理Ajax成功和错误_Java_Ajax_Jsp - Fatal编程技术网

Java 在jsp中处理Ajax成功和错误

Java 在jsp中处理Ajax成功和错误,java,ajax,jsp,Java,Ajax,Jsp,我有JSP中的表单,它有两个输入框,还有提交和清除按钮,如下所示 <form name="loginForm" method="GET" action="Ajaxexample" id="loginForm"> <table> <tr> <td>From Date</td><td><input type="text" name="n1" value=""/></td> </tr>

我有JSP中的表单,它有两个输入框,还有提交和清除按钮,如下所示

<form name="loginForm" method="GET" action="Ajaxexample" id="loginForm">
 <table>
 <tr>
 <td>From Date</td><td><input type="text" name="n1" value=""/></td>
 </tr>
 <tr>
 <td>End Date</td><td><input type="text" name="n2" value=""/></td>
 </tr>
 <tr></tr>
 <tr>
 <td><input type="submit" name="validpro_insert" value="Insert"></td>
 <td><input type="reset" name="validpro_clear" value="Clear"></td>
 </tr>                     
 </table>
 </form>
<script type="text/javascript" src="js/jq.js"></script>   
   <script type="text/javascript">

        var form = $('#loginForm');
        form.submit(function () {
        $.ajax({
        type: form.attr('method'),
        url: form.attr('action'),
        data: form.serialize(),

          error: function (theRequest,textStatus, errorThrown) {
                     // Success = false;
                      alert (theRequest.responseText);
                      alert(errorThrown);
                   alert('No graph found');//doesnt goes here
            },
        success: function (data) {

                var result=data;
                alert(result);
        }     
                });
                return false;
            });
        </script>
因为我必须编写一些代码来从servlet中的DB获取数据,并将该响应返回给ajax,ajax在相同的jsp上处理成功和错误,如下所示

<form name="loginForm" method="GET" action="Ajaxexample" id="loginForm">
 <table>
 <tr>
 <td>From Date</td><td><input type="text" name="n1" value=""/></td>
 </tr>
 <tr>
 <td>End Date</td><td><input type="text" name="n2" value=""/></td>
 </tr>
 <tr></tr>
 <tr>
 <td><input type="submit" name="validpro_insert" value="Insert"></td>
 <td><input type="reset" name="validpro_clear" value="Clear"></td>
 </tr>                     
 </table>
 </form>
<script type="text/javascript" src="js/jq.js"></script>   
   <script type="text/javascript">

        var form = $('#loginForm');
        form.submit(function () {
        $.ajax({
        type: form.attr('method'),
        url: form.attr('action'),
        data: form.serialize(),

          error: function (theRequest,textStatus, errorThrown) {
                     // Success = false;
                      alert (theRequest.responseText);
                      alert(errorThrown);
                   alert('No graph found');//doesnt goes here
            },
        success: function (data) {

                var result=data;
                alert(result);
        }     
                });
                return false;
            });
        </script>

变量形式=$(“#loginForm”);
表单提交(函数(){
$.ajax({
类型:form.attr('method'),
url:form.attr('action'),
数据:form.serialize(),
错误:函数(请求、文本状态、错误抛出){
//成功=错误;
警报(theRequest.responseText);
警报(错误抛出);
警报('未找到图形');//此处不显示
},
成功:功能(数据){
var结果=数据;
警报(结果);
}     
});
返回false;
});
但问题是,我并没有从ajax中的servlet中获得任何值来处理成功或错误


我认为由于servlet doget()方法代码,我面临这个问题。。如果有任何其他问题,请告诉我。感谢您的帮助

我已将代码粘贴在此处,效果良好

尝试更改参数

您的JSP页面

<script src="http://code.jquery.com/jquery-1.10.2.js"
type="text/javascript"></script>
}))

您的servlet文件

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class GetUserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    String userName = request.getParameter("userName").trim();
    if(userName == null || "".equals(userName)){
        userName = "Guest";
    }

    String greetings = "Hello " + userName;

    response.setContentType("text/plain");
    response.getWriter().write(greetings);
}

}

在我的代码中进行这些更改后,它将成功运行

 protected void processRequest(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
            try (PrintWriter out = response.getWriter()) 

                 String responseSend = "";

            String from = request.getParameter("n1");
            String to = request.getParameter("n2");    

              if ((from == null) || (from.equals(""))) {

                System.out.println("From null");
                responseSend = "error";

            } 
              else if ((to == null) || (to.equals(""))) {

                System.out.println("End null");
               responseSend  = "error";

            }
              else{            
                      //jdbc code              
            System.out.println("got it");
            int n1 = Integer.parseInt(request.getParameter("n1"));
            int n2 = Integer.parseInt(request.getParameter("n2"));
            responseSend = "code";           
              }

             out.print(responseSend);

        }          
            }

        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
           System.out.println("In get");
            processRequest(request, response);
    }
因为我添加了一个新方法processrequest(),该方法带有请求和响应参数,将文本/HTML返回到同一jsp上的Ajax代码中

 error: function (theRequest,textStatus, errorThrown) {
                          alert (theRequest.responseText);
                          alert(errorThrown);
                },

  success: function (data) {

                var result=data;
                alert(result);
        }   

当在给定URL上找不到servlet时,将调用该错误;当成功调用具有给定类型和servlet URL的servlet时,将调用success。

您还没有从ajax代码发送请求类型,那么如何进入servlet。基本上,我对从servlet返回的数据有一个问题,在返回数据之后,将首先执行成功或错误。没有必要,因为在成功中默认的请求类型是“GET”,不要将参数值分配给另一个变量,直接像这样使用它:函数(数据){alert(数据);}我刚刚在success中分配了这个变量,但我担心的是,我无法使用response.getWriter().write(问候语)从success中的doget()方法获取数据正如我在google chrome open developer模式下的answeropen页面中提到的那样,我使用了PrintWriter,按下ctrl+shift+I和goto network tab,并在提交表单时检查servlet文件返回的内容,一旦您单击/提交表单,它就会显示您的servlet文件名。单击表单并检查返回数据,并检查单击按钮后,您的文件是否显示在网络选项卡中
 error: function (theRequest,textStatus, errorThrown) {
                          alert (theRequest.responseText);
                          alert(errorThrown);
                },

  success: function (data) {

                var result=data;
                alert(result);
        }