解決ajax請求(SpringMVC后台)響應415/400/405錯誤
后端代碼
-
bean
public class user { private String username; private String password; private Integer age; //省略get set }
-
SpringMVC
@RequestMapping(value = "testMethod",method = RequestMethod.POST) @ResponseBody public String getUser(@RequestBody user u){ System.out.println(u); return "success"; }
415錯誤
沒有設置 contentType: "application/json"
-
ajax
$.ajax({ url:baseurl+"test/testMethod", type:"POST", data:JSON.stringify({ "username":"user666", "password":"a123456", "age":19 }), success:function (res) { console.log(res); }, error:function () { console.log("網絡錯誤"); } })
-
原因
//沒有設置contentType: "application/json", //更正之后 $.ajax({ url:baseurl+"test/testMethod", type:"POST", contentType: "application/json", data:JSON.stringify({ "username":"user666", "password":"a123456", "age":19 }), success:function (res) { console.log(res); }, error:function () { console.log("網絡錯誤"); } })
400錯誤
沒有對傳輸的內容進行格式化 JSON.stringify(jsonobj)
-
ajax
$.ajax({ url:baseurl+"test/testMethod", type:"POST", contentType: "application/json", data:{ "username":"user666", "password":"a123456", "age":19 }, success:function (res) { console.log(res); }, error:function () { console.log("網絡錯誤"); } })
-
原因
//沒有對傳輸的數據進行轉換為JSON字符串JSON.stringify(jsonobj) //更正之后 $.ajax({ url:baseurl+"test/testMethod", type:"POST", contentType: "application/json", data:JSON.stringify({ "username":"user666", "password":"a123456", "age":19 }), success:function (res) { console.log(res); }, error:function () { console.log("網絡錯誤"); } })
405錯誤
通常是type 請求類型設置與后端所限制的請求不一致
-
ajax
$.ajax({ url:baseurl+"test/testMethod", type:"GET", contentType: "application/json", data:JSON.stringify({ "username":"user666", "password":"a123456", "age":19 }), success:function (res) { console.log(res); }, error:function () { console.log("網絡錯誤"); } })
-
原因
//請求類型與后端設置的不一致 正確應為 type:"POST" //更正之后 $.ajax({ url:baseurl+"test/testMethod", type:"POST", contentType: "application/json", data:JSON.stringify({ "username":"user666", "password":"a123456", "age":19 }), success:function (res) { console.log(res); }, error:function () { console.log("網絡錯誤"); } })