ajax向spring mvc 傳值並接受及解析返回值的幾種方式


第一種傳值:

controller中是幾個單獨的基本類型參數

Spring MVC-controller

 1     @RequestMapping("update")
 2     @ResponseBody//此注解不能省略 否則ajax無法接受返回值
 3     public Map<String,Object> update(Long num, Long id, BigDecimal amount){
 4         
 5         Map<String,Object> resultMap = new HashMap<String, Object>();
 6         if(num == null || id == null || amount == null){
 7             resultMap.put("result", "參數不合法!");
 8             return resultMap;
 9         }
10         //xxx邏輯處理
11         resultMap.put("result", "操作成功");
12         return resultMap;
13     }

jquery ajax

 1 var params = {};
 2     //params.XX必須與Spring Mvc controller中的參數名稱一致  
 3     //否則在controller中使用@RequestParam綁定
 4     params.num = num;
 5     params.id = id;
 6     params.amount = amount;
 7     $.ajax({
 8         async:false,
 9         type: "POST",
10         url: "price/update",//注意路徑
11         data:params,
12         dataType:"json",
13         success:function(data){
14             if(data.result=='SUCCESS'){
15                 alert("修改成功");
16             }else{
17                 alert("修改失敗,失敗原因【" + data + "】");
18             }
19         },
20         error:function(data){
21             alert(data.result);
22         }
23     });

第二種傳值:

controller中是參數是實體bean,bean中屬性都是基本數據類型

Spring MVC-controller

 1 @RequestMapping("add")
 2     @ResponseBody//此處不能省略 否則ajax無法解析返回值
 3     public Map<String,Object> add(DataVo dataVo){
 4         Map<String, Object> result = null;
 5         if(dataVo.getNum() == null || StringUtils.isBlank(dataVo.geId())){
 6             result = new HashMap<String, Object>();
 7             result.put("msg", "參數不合法!");
 8             return result;
 9         }
10         //xxx業務邏輯處理
11         
12         return result;
13     }

實體bean DataVo

 1 public class DataVo {
 2     /**
 3      * 編號
 4      */
 5     private Long num;
 6     /**
 7      * id
 8      */
 9     private String id;
10     
11     public Long getNum() {
12         return num;
13     }
14     public void setNum(Long num) {
15         this.num = num;
16     }
17     public String getId() {
18         return id;
19     }
20     public void setId(String id) {
21         this.id = id;
22     }
23 }

jquery ajax

 1 var params = {};
 2                 params.num = $("#num").val();
 3                 params.id = $("#id").val();//注意params.名稱  名稱與實體bean中名稱一致
 4                 $.ajax({
 5                         type: "POST",
 6                         url: "price/add",
 7                         data:params,
 8                         dataType:"json",
 9 //                        contentType: "application/json; charset=utf-8",//此處不能設置,否則后台無法接值
10                         success:function(data){
11                             if(data.msg != ""){
12                                alert( data.msg );
13                             }
14                         },
15                         error:function(data){
16                             alert("出現異常,異常原因【" + data + "】!");  
17                         }
18                      }); 

第三種傳值:

controller中是參數是實體bean,bean中屬性有數組

Spring MVC-controller

1 @RequestMapping("add")
2 @ResponseBody//此處不能省略 否則ajax無法解析返回值
3 public Map<String,Object> add(@RequestBody DataVo dataVo){//@RequestBody注解不能省略,否則無法接值
4     Map<String,Object> resultMap = new HashMap<String, Object>();
5     //業務邏輯處理
6     return resultMap;
7 }

實體 DataVo

 1 public class DataVo {
 2  
 3    
 4     private BigDecimal[] nums;
 5     private String id;
 6  
 7     public Long getId() {
 8         return id;
 9     }
10  
11     public void setId(Long id) {
12         this.id = id;
13     }
14  
15     public BigDecimal[] getNums() {
16         return nums;
17     }
18  
19     public void setNums(BigDecimal[] nums) {
20         this.nums = nums;
21     }
22  
23 }

jquery ajax  需要jquery json的插件  進行json序列化,我這里使用了json.js

且配置

datatype:"json",  

contentType: "application/json; charset=utf-8",

 1 var params = {};
 2 params.nums = [];
 3 params.id = $("#id").val();//parmas.參數名 注意與實體bean參數名稱相同
 4 var prices = document.getElementsByName("prices");//prices 是name="prices"一組input標簽
 5 for (var i = 0; i < prices.length; i++) {
 6     params.nums[i] =  prices[i].value;
 7 } 
 8 $.ajax({ 
 9     type: "POST", 
10     url: "price/add", 
11     data:JSON.stringify(params),//json序列化 
12     datatype:"json", //此處不能省略 
13     contentType: "application/json; charset=utf-8",//此處不能省略 
14     success:function(data){ 
15         alert(data); 
16     }, 
17     error:function(data){
18         alert(data)
19     } 
20 });

 


免責聲明!

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



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