Mam następujący jQuery AJAX żądanie:"400 Bad Request" odpowiedź na żądanie AJAX
// collect form data and create user obj
var user = new User();
user.firstname = $("#usrFirstName").val();
user.lastname = $("#usrSurname").val();
user.role = $("#usrRole").val();
// actual ajax request
$.ajax({
type: 'POST',
url : 'http://awesome-url',
crossDomain: true,
data: user,
contentType:"application/json; charset=utf-8",
dataType: 'json'
}).done(function(data, status) {
alert(JSON.stringify(data));
}).fail(function(data, status) {
alert(status);
alert(JSON.stringify(data));
});
Odpowiedź z serwera jest:
"status": 400, "statusText": "Złe żądanie"
"Żądanie wysłane przez klienta było niepoprawne pod względem składni."
Serwer działa w trybie Spring-MVC. Ale o ile mogę powiedzieć, że działa poprawnie. Ponieważ jeśli wysyłam żądanie ręcznie za pomocą Postmana i następującej konfiguracji, to działa.
Header:
Content-Type application/json; charset=utf-8
Treść:
{"firstname":"alex","lastname":"lala","role":"admin"}
muszę wspomnieć, że jest to żądanie cross-domain (na czas się rozwija, będzie ona znajdować się na tej samej domeny jako serwer później). Zablokowałem ustawienia zabezpieczeń w przeglądarce i żądania AJAX na serwerze działają poprawnie (o ile nie muszę wysyłać danych).
Co się dzieje, gdy tworzą że dokładnie taki sam wniosek w narzędziu REST przeglądarki internetowej i przesłać go? Czy próbowałeś powiązać swój obiekt użytkownika przed wysłaniem? –
Jeśli serwer_użytkownika nie lubi danych, które odbiera, powinieneś zapytać serwer_serwera, dlaczego - znaczenie, rejestrować, co faktycznie przychodzi, sprawdzić pliki dziennika, itp. – CBroe
Właśnie próbowałem stringify i to działa. Jestem bardzo zdezorientowany, ponieważ myślałem, że to się dzieje, jeśli rzucisz obiekt w jQuery.ajax. Opublikuj jako odpowiedź, a ja to zaakceptuję. – rob