2016-04-03 3 views
1

Я пытаюсь получить Java Servlet для отправки HTML-кода в ответ на запрос функции JavaScript. Однако, хотя функция сервлета вызывается и, кажется, отправляет ответ, функции Javascript получают только пустую строку.Ответ сервлета Java на JavaScript

Вот метод сервлета:

String type = request.getParameter("type"); 
if(type.equals("locos")) { 
      response.setContentType("text/html"); 

      //this prints out 
      System.out.println("Responding with vehicle list"); 

      //deal with response 
      PrintWriter out = response.getWriter(); 
      out.write("<p>test response</p>"); //finish 
     } 

Вот функция JavaScript:

this.updateVehicleList = function() { 
     var type = "locos"; 

     var xhr = new XMLHttpRequest(); 
     xhr.open('GET', 'GetList?type=' + encodeURIComponent(type),true); 
     xhr.send(null); 

     //deal with response 
     var res = xhr.responseText; 

     //for testing 
     if (res == "") { 
      window.alert("I'm getting nothing"); 
     } 

     view.showVehicleList(res); 
    }; 

"I не получает ничего" сообщение выводит каждый раз. Как получить JavaScript для получения ответа от сервлета?

+0

Связанный: [? Как использовать сервлеты и Ajax] (http://stackoverflow.com/questions/4112686/how-to-use-servlets-and-ajax) – BalusC

ответ

1

Вы делаете асинхронный запрос и поэтому ответ не сразу доступен. Вы пытаетесь получить responseText до получения ответа.

Используйте onreadystatechange событие:

... 
... 
xhr.send(null); 

xhr.onreadystatechange = function() { 
    if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200){ 
     //deal with response 
     var res = xhr.responseText; 

     //for testing 
     if (res == "") { 
      window.alert("I'm getting nothing"); 
     } 

     view.showVehicleList(res); 
    } 
}; 

Если Вы намереваетесь сделать синхронный запрос, а затем установить третий аргумент false и исходный код будет работать.

xhr.open('GET', 'GetList?type=' + encodeURIComponent(type),false); 
//               ^^^^^ 
+0

Это работало. Благодарю. – Cailean

Смежные вопросы