jquery ajax 向spring MVC controller中传值并接受及解析返回值

本文详细介绍了Java中三种不同情况下的参数传递方式:基本类型传参、实体bean传参及包含数组或集合的实体bean传参,并给出了具体的实现案例。

有关参数传递有几种 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;
}

转载于:https://my.oschina.net/u/3045515/blog/1579361

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值