springmvc 接收 ajax 請求

轉載自:https://www.cnblogs.com/oyx305/p/5220751.htmlhtml

 

一.傳json單值或對象前端

1.前端java

複製代碼
 1 var data = {'id':id,'name':name};
 2 $.ajax({ 
 3             type:"POST", 
 4             url:"user/saveUser", 
 5             dataType:"json",      
 6             //contentType:"application/json", //不能添加這個頭           
 7             data:data, //這裏不能進行JSON.stringify,發送請求的數據在:form data
 8             success:function(data){ 
 9                                        
10             } 
11          }); 
複製代碼

2.後端git

複製代碼
//當作單值
@RequestMapping(value = "save", method = {RequestMethod.POST }}) 
     @ResponseBody  
     public void save(@RequestParam int id,String name) { //這裏字段要跟前端一致,@RequsetParam 能夠不加,默認調用的就是它
          
     }
//當作對象
@RequestMapping(value = "save", method = {RequestMethod.POST }}) 
     @ResponseBody  
     public void save(User user) { //前端字段跟對象屬性一致
                                   //自動轉化成改對象
     }
複製代碼

二.json對象轉成字符串後傳值web

1.一、前端ajax

複製代碼
$.ajax({ 
              type:"POST", 
              url:"user/saveUser", 
              dataType:"json",      
              contentType:"application/json", //需添加這個頭           
              data:JSON.stringify(data), //發送請求的數據在request payload
              success:function(data){ 
                                        
             } 
          }); 
複製代碼

1.二、後端正則表達式

//當作對象
@RequestMapping(value = "save", method = {RequestMethod.POST }}) 
     @ResponseBody  
     public void save(@RequestBody User user) { //需添加RequestBody註解
                                   //自動轉化成改對象
     }

三.將對象JSON.stringify後,以第一種方式傳遞,可實現對象中存對象 {'userList':users,'key1':value1}spring

1.前臺json

複製代碼
var user = {'id':id,'name':name};
var jsonStrGoods = JSON.stringify({'gid':gid,...});
$.ajax({ 
              type:"POST", 
              url:"user/saveUser", 
              dataType:"json",      
             // contentType:"application/json", //不添加這個頭           
              data:{'user':JSON.stringify(user),'goods':jsonStrGoods }, //發送請求的數據在request payload
              success:function(data){ 
                                        
             } 
          }); 
複製代碼

2.後臺gulp

複製代碼
//當作單值
@RequestMapping(value = "save", method = {RequestMethod.POST }}) 
     @ResponseBody  
     public void save(@RequestParam String user,String goods) { //這裏字段要跟前端一致,@RequsetParam 能夠不加,默認調用的就是它
          User u= JSON.parseObject(user, User .class);//alibaba.fastjson轉換成對象
     }
//當作對象
@RequestMapping(value = "save", method = {RequestMethod.POST }}) 
     @ResponseBody  
     public void save(UserAndGoods ug) { //沒試過,猜想應該是這樣,前端字段跟對象屬性一致
                                   //自動轉化成改對象
     }
複製代碼

傳數組

前臺

 

複製代碼
var arr = str.split(',');
    $.ajax({
        url:'/appollo-console/manage/user/names/validation',
        data:{
            names:arr
        },
traditional: true,//必須
        type:'post',
dataType:'json',
        success:function(res){
            alert(res);
        }
    })
複製代碼

 

後臺

1
2
3
4
5
6
7
8
@PostMapping( "/names/validation" )
     @ResponseBody
     public List<String> validateUserName(String[] names){
         List<String> notValidNames = Lists.newArrayList();
         notValidNames = userService.findNotValidNames(Arrays.asList(names));
         return notValidNames;
     }
    

 

 

 

總結:1.若是用JSON.stringify()將對象轉成字符串,就須要在ajax請求中指定contentType 爲 application/json,且後臺需添加 @RequestBody註解;

   2.若是直接傳json對象則跟上面的相反,不能指定contentType爲 application/json,其默認類型是 application/x-www-form-urlencoded 

springmvc 前端 發ajax請求的幾種方式

 

一.傳json單值或對象

1.前端

複製代碼
 1 var data = {'id':id,'name':name};
 2 $.ajax({ 
 3             type:"POST", 
 4             url:"user/saveUser", 
 5             dataType:"json",      
 6             //contentType:"application/json", //不能添加這個頭           
 7             data:data, //這裏不能進行JSON.stringify,發送請求的數據在:form data
 8             success:function(data){ 
 9                                        
10             } 
11          }); 
複製代碼

2.後端

複製代碼
//當作單值
@RequestMapping(value = "save", method = {RequestMethod.POST }}) 
     @ResponseBody  
     public void save(@RequestParam int id,String name) { //這裏字段要跟前端一致,@RequsetParam 能夠不加,默認調用的就是它
          
     }
//當作對象
@RequestMapping(value = "save", method = {RequestMethod.POST }}) 
     @ResponseBody  
     public void save(User user) { //前端字段跟對象屬性一致
                                   //自動轉化成改對象
     }
複製代碼

二.json對象轉成字符串後傳值

1.一、前端

複製代碼
$.ajax({ 
              type:"POST", 
              url:"user/saveUser", 
              dataType:"json",      
              contentType:"application/json", //需添加這個頭           
              data:JSON.stringify(data), //發送請求的數據在request payload
              success:function(data){ 
                                        
             } 
          }); 
複製代碼

1.二、後端

//當作對象
@RequestMapping(value = "save", method = {RequestMethod.POST }}) 
     @ResponseBody  
     public void save(@RequestBody User user) { //需添加RequestBody註解
                                   //自動轉化成改對象
     }

三.將對象JSON.stringify後,以第一種方式傳遞,可實現對象中存對象 {'userList':users,'key1':value1}

1.前臺

複製代碼
var user = {'id':id,'name':name};
var jsonStrGoods = JSON.stringify({'gid':gid,...});
$.ajax({ 
              type:"POST", 
              url:"user/saveUser", 
              dataType:"json",      
             // contentType:"application/json", //不添加這個頭           
              data:{'user':JSON.stringify(user),'goods':jsonStrGoods }, //發送請求的數據在request payload
              success:function(data){ 
                                        
             } 
          }); 
複製代碼

2.後臺

複製代碼
//當作單值
@RequestMapping(value = "save", method = {RequestMethod.POST }}) 
     @ResponseBody  
     public void save(@RequestParam String user,String goods) { //這裏字段要跟前端一致,@RequsetParam 能夠不加,默認調用的就是它
          User u= JSON.parseObject(user, User .class);//alibaba.fastjson轉換成對象
     }
//當作對象
@RequestMapping(value = "save", method = {RequestMethod.POST }}) 
     @ResponseBody  
     public void save(UserAndGoods ug) { //沒試過,猜想應該是這樣,前端字段跟對象屬性一致
                                   //自動轉化成改對象
     }
複製代碼

傳數組

前臺

 

複製代碼
var arr = str.split(',');
    $.ajax({
        url:'/appollo-console/manage/user/names/validation',
        data:{
            names:arr
        },
traditional: true,//必須
        type:'post',
dataType:'json',
        success:function(res){
            alert(res);
        }
    })
複製代碼

 

後臺

1
2
3
4
5
6
7
8
@PostMapping( "/names/validation" )
     @ResponseBody
     public List<String> validateUserName(String[] names){
         List<String> notValidNames = Lists.newArrayList();
         notValidNames = userService.findNotValidNames(Arrays.asList(names));
         return notValidNames;
     }
    

 

 

 

總結:1.若是用JSON.stringify()將對象轉成字符串,就須要在ajax請求中指定contentType 爲 application/json,且後臺需添加 @RequestBody註解;

   2.若是直接傳json對象則跟上面的相反,不能指定contentType爲 application/json,其默認類型是 application/x-www-form-urlencoded 

 
 
標籤: springmvc ajax
好文要頂 關注我 收藏該文
1
0
 
 
 
« 上一篇: java 圖片質量壓縮
» 下一篇: maven 打包時mapper.xml打不進去問題
posted @ 2016-02-26 16:06 until-u 閱讀( 5081) 評論( 0) 編輯 收藏
 

 

 
 
相關文章
相關標籤/搜索