Ho la seguente richiesta jQuery AJAX:"400 Bad Request" risposta per la richiesta 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));
});
La risposta dal server è:
"status": 400, "statusText": "Richiesta errata"
"La richiesta inviata dal client era sintatticamente errata."
Il server esegue Spring-MVC. Ma per quanto posso dire che funziona correttamente. Perché se sto inviando una richiesta manualmente con Postman e la seguente configurazione funziona.
Intestazione:
Content-Type application/json; charset=utf-8
Content:
{"firstname":"alex","lastname":"lala","role":"admin"}
devo dire che si tratta di una richiesta di cross-domain (per il momento in via di sviluppo, che sarà ospitato sullo stesso dominio come il server più tardi). Ho disabilitato le impostazioni di sicurezza nel browser e le richieste AJAX al server funzionano correttamente (a condizione che non debba inviare dati).
Cosa succede quando si forma la stessa esatta richiesta in uno strumento di REST basato su browser e inviarlo? Hai provato a stringificare il tuo oggetto utente prima di inviarlo? –
Se al _server_ non piacciono i dati che riceve, allora dovresti chiedere al _server_ perché - cioè, registrare quale richiesta sta effettivamente arrivando, controllare i file di registro, ecc. – CBroe
Ho appena provato a stringificare e funziona. Sono molto confuso perché ho pensato che questo è ciò che accade se lanci un oggetto su jQuery.ajax. Pubblicalo come risposta e lo accetterò. – rob