有关参数传递有几种 1.几个单独的基本类型传参。 基本类型的传参,就是直接在Controller的方法中写几个对应的参数。 ajax请求直接肯定dataType:"json",就能够传递了。 2.controller中的参数是实体bean,bean中的属性都是基本数据类型 这个时候后台也是直接写在controller方法的参数中。 在ajax中须要设置dataType:"json",可是不可以设置contentType: "application/json; charset=utf-8", 若是设置contentType,则后台没法接收到参数。ajax传递参数的时候须要和实体bean中的名称一致,不然没有办法进行赋值。 3.controller中的参数是实体bean,bean中的属性有数组或者集合; 此时在后台接收参数的时候须要在参数前加一个@ResponseBody注解,这个注解不能省略,不然没法进行值的接收。 而在前台方面ajax的参数在传递以前,须要JSON.stringify(params),将参数进行一个json序列化, 而后dataType:"json",还须要contentType: "application/json; charset=utf-8",这样最后才能参数传递成功。ajax
var params = {}; params.nums = []; params.id = $("#id").val();//parmas.参数名 注意与实体bean参数名称相同 var prices = document.getElementsByName("prices");//prices 是name="prices"一组input标签 for (var i = 0; i < prices.length; i++) { params.nums[i] = prices[i].value; } $.ajax({ type: "POST", url: "price/add", data:JSON.stringify(params),//json序列化 datatype:"json", //此处不能省略 contentType: "application/json; charset=utf-8",//此处不能省略 success:function(data){ alert(data); }, error:function(data){ alert(data) } });
后台接收:json
@RequestMapping("add") @ResponseBody//此处不能省略 不然ajax没法解析返回值 public Map<String,Object> add(@RequestBody DataVo dataVo){//@RequestBody注解不能省略,不然没法接值 Map<String,Object> resultMap = new HashMap<String, Object>(); //业务逻辑处理 return resultMap; }