【问题标题】:how can I send an input value to a servlet using javascript and after that get an answer from that servlet? [duplicate]如何使用 javascript 将输入值发送到 servlet,然后从该 servlet 获得答案? [复制]
【发布时间】:2018-01-15 11:13:59
【问题描述】:

这里是第一个问题。在 JSP 页面中,我有一个表单。我想做的是询问 servlet 该表单的输入值是否已经在我的 mysql 数据库中。我正在使用 2 个不同的 Servlet。 "ServletInsert" 将数据插入 mysql 数据库。 “ServletCheck”检查票证 ID 是否存在于 mysql 数据库中。工单 ID 无法自动生成。

JSP 页面:

<form id="myForm" action="ServletInsert" method="post">        
     <div>
     <label>Ticket Id:</label>    
     <input type="text" name="id"/>
     </div>           
     <input type="submit" name="submit" value="Send" />    
</form>   
<script>
    $('#myForm').submit(function() {
       /** <<SEND INPUT VALUE("id") TO SERVLET("ServletCheck")>> */
       if ("the answer from the servlet is true"){
       return true;
       }else if ("the answer from the servlet is false")
       return false;
       alert("ticket id already exists");
       }
    }); 
</script> 

Servlet(“ServletCheck”):

package Servlets;    
import Entity.Ticket;  

public class ServletCheck extends HttpServlet {    

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException {
    processRequest(request, response);

    String id = request.getParameter("id"); /**the input value*/
    ArrayList<Ticket> list = new ArrayList<Ticket>();    
    list = ListOfTicketsDB(); /**this procedure gets the list of tickets from 
                         the mysql database (already know how to do that)*/
    boolean b = existsOnList(list, id); 
    /**The answer doesn't have to be boolean. It can be a String("True","False")*/

    /**<<SEND THE ANSWER TO THE JSP PAGE>>*/
} 

/**checks if the value is inside the array*/
boolean existsOnList(ArrayList<Ticket> list, String id) {
    for (Ticket T : list) {
        if (T.getID_TICKET().equals(id)) {
            return true;
        }
    }
    return false;
   }    
}

【问题讨论】:

    标签: javascript html mysql jsp servlets


    【解决方案1】:

    要在您执行此操作时完成此操作,您需要包含以下内容:

    /**<<SEND THE ANSWER TO THE JSP PAGE>>*/
    
    response.setContentType("application/text");
    response.setCharacterEncoding("UTF-8");
    PrintWriter out = response.getWriter();    
    
    if(existsOnList(list, id)){
    
        out.write("False");
    
    }else{
    
        out.write("True");
    
    }
    

    然后在你的 JSP 上,你会想要(使用 AJAX)这样的东西:

    $('#myForm').submit(function(e) {
    
        $.get('ServletCheck', $('#myForm').serialize(), function (response) {
    
           if (response === "True"){
    
               return true;
    
           }else if (response === "False"){
    
               e.preventDefault(); //cancel form submission
               return false;
               alert("ticket id already exists");
    
           }
    
        }
    
    });
    

    【讨论】:

    • 它没有用。表单仍在提交,就好像 ajax 代码不存在一样。
    • 经过一些测试,我得出的结论是 servlet 'ServletCheck' 工作正常,函数“ $.get('ServletCheck', $('#myForm').serialize(), function (response)” 得到适当的答案。唯一的问题是“e.preventDefault()”和“return false”不会阻止表单提交。虽然,“return false”行确实有效并且仅停止提交当它在此之外时:“$.get(.......,funcion(response) { }”。
    猜你喜欢
    • 2015-07-26
    • 2014-10-11
    • 1970-01-01
    • 2011-09-12
    • 2013-03-29
    • 2013-04-27
    • 2019-01-07
    • 2015-06-23
    • 2012-03-07
    相关资源
    最近更新 更多