ajax中設置contentType: "application/json",后端參數如何接收


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}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM