springMVC通過ajax傳參到后台


JSON對象和JSON字符串

在SpringMVC環境中,@RequestBody接收的是一個Json對象的字符串,而不是一個Json對象。然而在ajax請求往往傳的都是Json對象,用 JSON.stringify(data)的方式就能將對象變成字符串。

同時ajax請求的時候也要指定dataType: "json",contentType:"application/json" 這樣就可以輕易的將一個對象或者List傳到Java端!

 

Content-Type

服務器為什么會對表單提交和文件上傳做特殊處理,因為表單提交數據是名值對的方式,且Content-Type為application/x-www-form-urlencoded,而文件上傳服務器需要特殊處理,
普通的post請求(Content-Type不是application/x-www-form-urlencoded)數據格式不固定,不一定是名值對的方式,所以服務器無法知道具體的處理方式,所以只能通過獲取原始數據流的方式來進行解析。

jquery在執行post請求時,會設置Content-Type為application/x-www-form-urlencoded,所以服務器能夠正確解析,而使用原生ajax請求時,如果不顯示的設置Content-Type,那么默認是text/plain,這時服務器就不知道怎么解析數據了,所以才只能通過獲取原始數據流的方式來進行解析請求數據。

 

一、傳數組

var list=[];
list.push('132');
list.push('132');
$.ajax({
    url:'stopUsePrice.do?isdebug=true',
    type:'POST',
    contentType:"application/json",
    data:JSON.stringify(list),
    dataType:'json',
    success:function(data){
    
    }
})

  

 

 

 

二、對象集合

var model;
model={"Id":"555","AuditId":"666"};
var saveDataAry=[];
saveDataAry.push(model);
$.ajax({
    url:'stopUsePrice.do?isdebug=true',
    type:'POST',
    contentType:"application/json",
    data:JSON.stringify(saveDataAry),
    dataType:'json',
    success:function(data){
    
    }
})

  

public class FomfSupperPriceMethodAdModel implements IModel {
    /** 版本號 */
    private static final long serialVersionUID = 1L;


    /** 主鍵ID */
    @JsonProperty("Id")
    private String id;


    /** 報價主表ID */
    @JsonProperty("AuditId")
    private String auditId;

}

  

 

 

也可以用鍵值對來接收

 

 

 

三、組合參數

var model;
model={"Id":"555","AuditId":"666"};
var saveDataAry=[];
saveDataAry.push(model);
saveDataAry.push(model);
$.ajax({
    url:'stopUsePrice.do?isdebug=true',
    type:'POST',
    contentType:"application/x-www-form-urlencoded; charset=UTF-8",
    //這里不是application/json,可以不寫
    data:{aa:JSON.stringify(saveDataAry),bb:"bb"},
// 可以傳遞多個參數,但此時的users內容與另外一個參數:aa 的內容一起傳遞,所以后台解析為字符串
// 后台接收的aa內容:[{"Id":"555","AuditId":"666"},{"Id":"555","AuditId":"666"}]
// 后台接收的bb內容:"bb"

//data:JSON.stringify(saveDataAry), dataType:'json', success:function(data){ } })

  

 組合參數優化

var delayDate = $("#delay_date").val();
var delayDateDis=new Date(Date.parse(delayDate.replace(/-/g,"/")));


var ids=[];
ids.push("cee1c898d3384800acee6b5fdd1bad31");
ids.push("cee1c898d3384800acee6b5fdd1bad32");

layer.confirm('是否確定延長報價名稱為【'+ names +'】的報價至 : <br><br>'+delayDate, {
  btn: ['確定', '取消']
}, 
  function(index, layero){
    $.ajax({
      url:'delayTime.do?isdebug=true',
      type:'POST',
      //contentType:"application/x-www-form-urlencoded; charset=UTF-8",
      data:{Ids:JSON.stringify(ids),delayDate:delayDateDis},
      dataType:'json',
      success:function(data){
          layer.close(index);
          if(data.StatusCode == 'success'){
              alert(data.Data);
              select_q();
          }
    }
})
}, 
  function(index){
      layer.close(index);
});

  

 


免責聲明!

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



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