Ich benutze derzeit Spring Boot, und ich möchte Objekt von Ajax an Controller zur Validierung senden. Ich weiß, dass Sie das Formular normalerweise mit ModelAttribute einreichen können, aber ich möchte mit Ajax zur Validierung einreichen. Aber die Ajax-Funktion gibt immer einen 400-Fehler oder einen 415-Fehler zurück, ich habe versucht, überall nach Lösungen zu suchen, aber das hilft nicht wirklich.Ajax Form Post-Funktion eine 400 Fehler
meiner Sicht:
<form id="Form">
<input name="id"></input>
<input name="name"></input>
<button type="submit" class="btn btn-default" id="button"></button>
</form>
<script>
$(document).ready(function(){
$("#button").click(function(e){
e.preventDefault();
$.ajax({
type: "POST",
url : "/Test",
async: false,
dataType : "json",
data : $("#Form").serialize(),
contentType: "application/json",
success : function(result){
if(result == null){
alert("Succ");
}
else{
alert("not null");
}
},
error : function(){
console.log('here');
alert($("#Form").serialize());
}
});
});
});
</script>
mein Controller:
@RequestMapping(value = "/Test",method = RequestMethod.POST)
public @ResponseBody PersonRequest test(@RequestBody PersonRequest person) {
return person;
}
meine Einheit:
public class PersonRequest {
@NotNull
private long id;
@NotEmpty
private String name;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public PersonRequest() {
super();
}
}
Wenn ich content entfernen: "application/json" von Ajax-Funktion gibt es eine 415 Fehler, und wenn ich es behalte, gibt es einen 400 Fehler zurück. Bitte helfen Sie.
Browser console Die IDE-Konsole Rückkehr dies folgende Fehlermeldung:
.w.s.m.s.DefaultHandlerExceptionResolver : Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized token 'id': was expecting ('true', 'false' or 'null'); nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'id': was expecting ('true', 'false' or 'null')
at [Source: [email protected]; line: 1, column: 4]
$ PersonRequest übereinstimmen ("# Form") serialisiert werden (.) gibt Ihnen eine Zeichenfolge, Sie müssen Ihre HTML-Formular in ein JSON-Objekt und dann an Feder-Controller übergeben – spiritwalker
oh ... entschuldigen Sie meine Ignoranz, aber wie analysiere ich es in JSON. Ich bin etwas neu dazu. Vielen Dank im Voraus – NganCun
siehe meine Antwort unten, ersetzen $ ("# Form"). Serialize() mit {ID: "Wert der ID-Eingabe", Name: "Wert der Namenseingabe"} – spiritwalker