Ajax传递各种数据类型(解决你传数组的头疼问题)

1.使用json数据格式

  • 传递数组

    
   @RequestMapping("/test")
    @ResponseBody
    public void  test(
            @RequestBody Integer [] nums
    ){

        for (int i=0;i 
  
  • 传递集合

    
   @RequestMapping("/test")
    @ResponseBody
    public void  test(
            @RequestBody List users
    ){
        users.forEach(user -> {
            System.out.println(user.toString());
        });
  }
  • 传递对象(同上)

2.不使用json格式

  • 传递数组
   @RequestMapping("/test")
    @ResponseBody
    public void  test(
            @RequestParam(value = "nums") Integer nums[]
    ){
        for (int i=0;i 
  

    

traditional:是否使用传统的方式浅层序列化。 通过ajax提交数组时,会自动在所设定的参数后面增加中括号:“[]”, 导致后端spring MVC中的@RequestParam获取不到参数。解决方法: ajax请求时增加:traditional: true 就可以正常提交了。原因如下: jQuery会调用jQuery.param序列化参数,jQuery.param( obj, traditional ) ,默认的话,traditional为false,即jquery会深度序列化参数对象, 以适应如PHP和Ruby on Rails框架,但servelt api无法处理, 我们可以通过设置traditional 为true阻止深度序列化。

 

如果你不设置浅层序列化,对数组对象 应该这样设置

var arr={params:['param','param2']};
$.ajax({url:请求地址,
            data:arr,
            type:"POST",
            success:function(){
                //do something
            }
        });

你可能感兴趣的:(Ajax)