2013-10-23 38 views
7

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).

+0

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? –

+0

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

+0

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

Odpowiedz

6

trzeba szeregować swoje json, spróbuj:

$.ajax({ 
    type: 'POST', 
    url : 'http://awesome-url', 
    crossDomain: true, 
    data: JSON.stringify(user), 
    contentType:'application/json; charset=utf-8', 
    dataType: 'json' 
}) 
Powiązane problemy