2017-02-20 11 views
0

Я пробую простую программу, которая получает номер квитанции от пользователя и отправляет на сервлет, как только пользователь нажимает кнопку. Вызов сервлета через скрипт.вызов сервлета из HTML-формы через скрипт

Я мог бы вызвать сервлет, но не смог получить вход пользователя в конец сервлета, используя req.getparameter. Я получаю нулевое значение. Пожалуйста, помогите мне в том, что мне не хватает.

<!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=UTF-8"> 
 
    <title>Insert title here</title> 
 
    <script> 
 
     function showCustomer() { 
 
      var xmlhttp; 
 
      var value1 = document.getElementById("num").value; 
 
    
 
      xmlhttp = new XMLHttpRequest(); 
 
      xmlhttp.onreadystatechange = function() { 
 
      if (this.readyState == 4 && this.status == 200) { 
 
       document.getElementById("demo").innerHTML = this.responseText; 
 
       } 
 
      }; 
 
      //xmlhttp.open("GET", "callserv1?q="+str, true); 
 
      //xmlhttp.send(); 
 
      xmlhttp.open("GET", "callserv1", true); 
 
      xmlhttp.send(); 
 
     } 
 
    </script> 
 
</head> 
 
<body> 
 
    <form action=""> 
 
     Receipt no 
 
     <input type="text" name="num" id="num"/> 
 
     <input type="button" onclick="showCustomer()" value ="call"/> 
 
    </form> 
 
    <p id="demo">Customer info will be listed here...</p> 
 
</body> 
 
</html>

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

 
public class callserv1 extends HttpServlet 
 
{ 
 
    public void doGet(HttpServletRequest request, HttpServletResponse response) 
 
        throws IOException, ServletException { 
 
    response.setContentType("text/html"); \t 
 
    PrintWriter out = response.getWriter(); 
 
    out.println("This Example demonstrates, using Ajax request to Access Servlet "); 
 
    String num = request.getParameter("num"); 
 
    out.println("i am in" +num); \t 
 
    } 
 
}

+0

Вы звоните в ваш сервлет callerv1, но вы никогда не пропустите свой параметр. Вы должны получить свой параметр и передать его в запросе. Вы не автоматически получаете все из формы, поскольку вы не отправляете форму, вы делаете отдельный запрос GET на свой сервлет. – DanielBarbarian

ответ

0

на основании метода showCustomer() вы должны передать свою ценность. Похоже, что вы сделали несколько попыток в получении значения и в вашем закомментированного разделе передать его, но есть две вещи там:

  1. Вы не проходящие по правильному параметру, в вашем случае value1
  2. Вы назвали параметр что-то по-другому, его следует назвать num.

Исходя из этого, этот код должен работать лучше для вас.

function showCustomer() { 
    var xmlhttp; 
    var value1 = document.getElementById("num").value; 

    xmlhttp = new XMLHttpRequest(); 
    xmlhttp.onreadystatechange = function() { 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
      document.getElementById("demo").innerHTML = xmlhttp.responseText; 
     } 
    }; 
    xmlhttp.open("GET", "callserv1?num="+value1, true); 
    xmlhttp.send(); 
} 
+0

Спасибо !!! Оно работает. Не могли бы вы рассказать мне, как вернуть значение html из сервлета и отобразить его в текстовом поле. – selv

+0

Глядя на фрагмент кода: мне кажется, у вас уже есть код, чтобы поместить результат в элемент с id 'demo'. Разве это не работает? – DanielBarbarian

+0

Нет. У меня есть два результата данных на сервлет-стороне, например String Docno и String Docdate. Я получаю недофинансированное значение на стороне html – selv