【问题标题】:Ajax post from JSP to servlet in Java?从 JSP 到 Java 中的 servlet 的 Ajax 发布?
【发布时间】:2017-07-11 13:45:40
【问题描述】:

所以,这就是我想要实现的目标。假设我有一个表格,我填写了详细信息并单击提交。数据将被插入到数据库中。现在,我的想法是我想显示我刚刚使用 ajax 添加到数据库中的数据,而无需刷新页面。我正在学习使用 ajax 的想法,所以我有点迷茫。有人可以提出任何建议。 这个想法是,当我单击提交时,将触发两个事件。一种是将数据插入数据库,另一种是从数据库中获取数据并将其显示在标签内。

这是我的 servlet 中的 get 方法。 主页.java

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
         PrintWriter out = response.getWriter();
         response.setContentType("text/html");
         out.println("<html><body>");
         try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con= (Connection) DriverManager.getConnection("jdbc:mysql://localhost/apiprovider","root","");
             Statement stmt = con.createStatement();
             ResultSet rs = stmt.executeQuery("select * from apiinfo");
            // out.println("<table border=1 width=50% height=50%>");
            // out.println("<tr><th>EmpId</th><th>EmpName</th><th>Salary</th><tr>");
             while (rs.next()) {
                 String n = rs.getString("apiname");
                 String nm = rs.getString("apiendpoint");
                 int s = rs.getInt("id"); 
                 response.getWriter().write(n);

                // out.println("<tr><td>" + n + "</td><td>" + nm + "</td><td>" + s + "</td></tr>"); 
             }
           //  out.println("</table>");
            // out.println("</html></body>");
             con.close();
            }
             catch (Exception e) {
             out.println("error");
         }
     }

Home.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<div id="ajaxresponse">


</div>
<form>
 API Name:<br>
  <input type="text" id = "apiname" name="apiname">
   API ENDPOINT:<br>
  <input type="text" id ="apiendpoint" name="apiendpoint">
  <br>
  API VERSION:<br>
  <input type="text" id="apiversion" name="apiversion">
   ACCESSIBLE:<br>
  <input type="checkbox" name="source" value="internet"> Internet<br>
    <input type="checkbox" name="source" value="vpn"> VPN<br>

  <br><br>
  <input type="submit" formaction="Home" method="post" value="Submit">
  <br>
    <input type="submit" name="Submit" value="Submit">

</form> 
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    $('#Submit').click(function(event) {
        console.log("You clicked me");
        $.ajax({
              url: "Home",
              sucess:function(result){

              }
            });
    });
});
</script>
</body>
</html>

【问题讨论】:

    标签: java jquery ajax jsp servlets


    【解决方案1】:

    我认为你不需要有两个事件。您应该向 servlet 发送 ajax 调用并从中获取格式正确的 JSON(使用来自 DB 的数据)。在这种情况下,当您收到数据时,您就知道插入成功了。之后在sucess 函数中,您需要解析来自 servlet 的响应并使用 javaScrip 设置数据到表单的元素中。

    【讨论】:

      【解决方案2】:

      您可以根据故障转移场景以多种方式实现此目的
      请通过此链接更好地理解ajax with servlets.
      单击提交按钮时,如果此调用成功,首先将数据插入数据库,然后触发另一个 ajax 调用以从数据库获取数据以显示请检查下面的 sudo 代码br>

      <script type="text/javascript">
      $(document).ready(function() {
          $('#Submit').click(function(event) {
              console.log("You clicked me");
              $.ajax({
                    url: "Home",
                    sucess:function(result){
                      // here call another servlet which will get the data
                    }
                  });
          });
      });
      </script>
      

      如果插入调用失败,您可以提及通用消息,例如“插入失败,请稍后再试”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-22
        • 1970-01-01
        • 1970-01-01
        • 2013-04-28
        • 2013-05-27
        • 2014-07-21
        • 1970-01-01
        • 2011-06-25
        相关资源
        最近更新 更多