我目前使用的是spring引導,我想從ajax發送對象到控制器進行驗證。我知道你可以通過ModelAttribute正常提交表單,但是我想用ajax進行驗證。但是ajax函數每次都會返回400錯誤或415錯誤,我嘗試過在每個地方都尋找解決方案,但它確實沒有幫助。ajax表單發佈函數返回400錯誤
我的視圖:
<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>
我的控制器:
@RequestMapping(value = "/Test",method = RequestMethod.POST)
public @ResponseBody PersonRequest test(@RequestBody PersonRequest person) {
return person;
}
我的實體:
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();
}
}
如果刪除的contentType: 「應用程序/ JSON」 從AJAX函數返回一個415錯誤,如果我保留它會返回400錯誤。請幫忙。
Browser console 的IDE控制檯返回此以下錯誤:
.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]
$( 「#表」)序列化(。 )給你一個字符串,你需要把你的html表單變成一個json對象,然後將它傳遞給彈簧控制器 – spiritwalker
哦......請原諒我的無知,但我如何解析爲JSON。我對此很陌生。預先感謝 – NganCun
請看下面的答案,用{id:「Id輸入的值,名稱:」name輸入的值「替換$(」#Form「)。serialize()} – spiritwalker