javaScript部分
這里contentType: "application/json還未設置
1.
function testRequestBody() { var book = new Object(); var id = 1; var name = "Spring MVC企業應用實踐"; book.id = 1; book.name = "Spring MVC企業應用實踐"; $.ajax({ url:"${pageContext.request.contextPath}/json/testRequestBody", type:"post", dataType:"json", async:true, data: { "id":id,"name":name}, success:function (data) { console.log(data); }, error:function () { alert("數據發送失敗"); } }); }
Controller代碼
@RequestMapping(value = "/testRequestBody",method = RequestMethod.POST) public @ResponseBody Object testRequestBody(String id, String name){ logger.info("接收到的ajax數據:"+id+" "+name); List<Book> bookList = new ArrayList<Book>(); bookList.add(new Book(1,"語文","lzy")); bookList.add(new Book(2,"數學","liziy")); return bookList; }
控制台打印的日志信息 testRequestBody5 接收到的ajax數據:1 Spring MVC企業應用實踐
數據接受正常
2.
前端數據 data: { "id":id,"color":name},
如果后端參數使用的@RequestParam標注 那么前端一定要有與之對應的 如果沒有Ajax 400
@RequestMapping(value = "/testRequestBody4",method = RequestMethod.POST) public @ResponseBody Object testRequestBody( @RequestParam("id") String id, @RequestParam("name")String name){ logger.info("接收到的ajax數據:"+id+" "+name); List<Book> bookList = new ArrayList<Book>(); bookList.add(new Book(1,"語文","lzy")); bookList.add(new Book(2,"數學","liziy")); return bookList; }
控制台打印的日志信息 org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver.logException Handler execution resulted in exception: Required String parameter 'name' is not present
設置contentType: "application/json data數據需要加入JSON.stringify()
data : JSON.stringify(book),
data : JSON.stringify({ "id":1,"name":"hhhh"}),
這兩種都可以 只要屬性名稱對應 后端就可以接受
$.ajax({ url:"${pageContext.request.contextPath}/json/testRequestBody", type:"post", dataType:"json", contentType: "application/json", async:true, //data : JSON.stringify(book), data : JSON.stringify({ "id":1,"name":"hhhh"}), success:function (data) { console.log(data); }, error:function () { alert("數據發送失敗"); } });
后端代碼 需要用一個對象來接受參數
@RequestMapping(value = "/testRequestBody4",method = RequestMethod.POST) public @ResponseBody Object testRequestBody(@RequestBody Book book){ logger.info("接收到的ajax數據:"+book); List<Book> bookList = new ArrayList<Book>(); bookList.add(new Book(1,"語文","lzy")); bookList.add(new Book(2,"數學","liziy")); return bookList; }
控制台打印的日志信息 testRequestBody 接收到的ajax數據:{"id":1,"name":"hhhh","author":null}