2016-04-05 2 views
0

У меня есть сценарий jquery, который отправляет запрос ajax на сервлет. Он работает, он отправляет текстовые данные в сервлет правильно, но затем он вызывает функцию ошибки, а не функцию успеха (я проверил, сервлет отправит обратно ajax не null строка).Почему метод ajax вызывает функцию ошибки?

Почему метод ajax вызывает функцию ошибки?

Вот код сценария

$(document).ready(function() { 
     $("#login-button").click(function() { 
      var userPassword = $("input#userPassword").val(); 
      var userLogin = $("input#userLogin").val(); 
      $.ajax({ 
       type: "POST", 
       url: "http://localhost:8181/library/login", 
       data: {login: userLogin, password: userPassword}, 
       dataType: "text", 
       success: function (data) { 
        if (data == "1") { 
         document.location.href = "http://localhost:8181/library/workshop.html"; 
        } 
        if (data == "2") { 
         document.location.href = "http://localhost:8181/library/library.html"; 
        } 
       }, 
       error: function (jqXHR, textStatus, errorThrown) { 
        alert("Error report\n" + "jqXHR = " + jqXHR + "\n" + "textStatus = " + textStatus + "\n" + 
          "errorThrown = " + errorThrown); 
       } 
      }); 
     }); 
    }); 

Вот код сервлета

public class LoginServlet extends HttpServlet { 

@Override 
public void service(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 

    PrintWriter out = response.getWriter(); 
    String login = request.getParameter("login"); 
    String password = request.getParameter("password"); 
    SocketConnection.output.println("log_in " + login + " " + password); 
    out.print(SocketConnection.input.readLine()); 
    out.close(); 
     } 

    } 

Значение textStatus является error, значение errorThrown является недействительным, в отчете об ошибке.

+0

'SocketConnection.output' хранит внутреннюю логику соединения с приложением, которое подключается к базе данных. –

+0

Вы уверены, что тип данных (текст) верен - «текст»: простая текстовая строка. Это поможет доказать, что то, что исходит от сервера, на самом деле является строкой – Tasos

+0

'SocketConnection.input.readLine()' возвращает 'string', а в качестве типа данных в' ajax' я могу выбрать из 'xml',' json', ' script', или 'html' и' text'. Я думаю, что 'java'' String' в соответствии с 'text', или это неверно? –

ответ

0

, если он возвращается статус 200 ваша функция содержит следующие настройки

dataType: "text", 

это может быть не отправлять текст. просто попробуйте удалить эту настройку, и я надеюсь, что она будет работать нормально

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