Я новичок в 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 не получает данные, которые являются странными, потому что он успешно отправляет исходные данные для входа. Может кто-нибудь помочь с этим?
хорошо, не могли бы вы подумать, что знать, что эта ошибка поможет? Попробуйте установить 'dataType'. Также, если вы хотите отправить JSON, нужно сообщить ajax, поскольку это не является значением по умолчанию contentType – charlietfl
@charlietfl Что касается ошибки ... как вы можете видеть, я печатаю строковые данные, которые печатаются {"readystate": 0, «status»: 0, «statusText»: «error»} Кроме того, при настройке contentType код моего сервера не запускается. Я знаю это, потому что я установил точку останова на функцию. Установка типа dataType также не имеет значения. Как в ... contentType: 'application/json', dataType: 'json', – Granttastic
Добавление правильного обработчика ошибок даст вам более подробную информацию. Но вы также можете проверить фактический запрос на вкладке сети консоли браузера и просмотреть все части запроса, включая заголовки, статус, данные, отправленные/полученные – charlietfl