2015-02-27 1 views
0

Я новичок в Dropwizard, и у меня есть небольшая проблема с преобразованием из POJO в Json. Я использую jQuery во интерфейсе, где я вызываю функцию ajax с типом POST. Я пытаюсь проверить логин на данные в базе данных MySQL. Я знаю, что база данных подключена, и правильный пользователь может быть расположен в базе данных на основе учетных данных, введенных на странице входа в систему HTML.Dropwizard/Jackson возвращает код HTTP 200 из функции, но AJAX POST получает ошибку

Вот код бэкенд:

@POST 
@UnitOfWork 
@Path("/login") 
@Produces("application/json") 


public User login(String credentials) { 

    try { 
     ObjectMapper mapper = new ObjectMapper(); 
     JsonNode root = mapper.readValue(credentials, JsonNode.class); 
     String username = root.get("Username").toString().replaceAll("\"", ""); 
     String password = root.get("Password").toString().replaceAll("\"", ""); 

     User user = userDAO.findByUsername(username); 

     //Check password matches and respond 
     boolean passwordMatched = user.isPasswordMatched(password); 

     //Return correct response 
     if (passwordMatched) { 
      return user; 
     } 
    } 
    catch (Exception e) { 
     System.out.println(e.getMessage()); 
    } 

    return null; 

} 

Тогда на переднем конце я просто опубликовать имя пользователя и пароль в URL:

$(document).ready(function() { 

    $("#login").click(function() { 

     var username = $("#username").val(); 
     var password = $("#password").val(); 

     $.ajax({ 

      url:'http://localhost:8080/User/login', 
      type: 'POST', 
      data: JSON.stringify({"Username" : username, "Password" : password}), 
      complete: function(data, status) { 
       alert("Status: " + status + "Data: " + JSON.stringify(data)); 
      } 

     }); 

Выход консоли от сервера код 200 HTTP и когда я устанавливаю точку останова в функции входа в систему, я вижу, что правильная запись в базе данных найдена и возвращается из функции. Однако предупреждение, которое запускается при завершении из кода jQuery, выводит на экран ошибку.

Данные, возвращенные с моего сервера, действительны JSon в соответствии с JsonLint. Таким образом, похоже, что ajax не получает данные, которые являются странными, потому что он успешно отправляет исходные данные для входа. Может кто-нибудь помочь с этим?

+0

хорошо, не могли бы вы подумать, что знать, что эта ошибка поможет? Попробуйте установить 'dataType'. Также, если вы хотите отправить JSON, нужно сообщить ajax, поскольку это не является значением по умолчанию contentType – charlietfl

+0

@charlietfl Что касается ошибки ... как вы можете видеть, я печатаю строковые данные, которые печатаются {"readystate": 0, «status»: 0, «statusText»: «error»} Кроме того, при настройке contentType код моего сервера не запускается. Я знаю это, потому что я установил точку останова на функцию. Установка типа dataType также не имеет значения. Как в ... contentType: 'application/json', dataType: 'json', – Granttastic

+0

Добавление правильного обработчика ошибок даст вам более подробную информацию. Но вы также можете проверить фактический запрос на вкладке сети консоли браузера и просмотреть все части запроса, включая заголовки, статус, данные, отправленные/полученные – charlietfl

ответ

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

  • Нет связанных вопросов^_^