有关参数传递有几种 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",这样最后才能参数传递成功。
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)
}
});
后台接收:
@RequestMapping("add")
@ResponseBody//此处不能省略 否则ajax无法解析返回值
public Map<String,Object> add(@RequestBody DataVo dataVo){//@RequestBody注解不能省略,否则无法接值
Map<String,Object> resultMap = new HashMap<String, Object>();
//业务逻辑处理
return resultMap;
}