$.ajax上传多对象时用@RequestBody接收并解析

本文详细记录了一次前端POST请求与后端交互的过程,重点在于解决400、415和500等错误,以及JSON数据的正确序列化和反序列化。前端使用jQuery的AJAX方法,注意设置dataType和contentType;后端使用Spring MVC,利用@RequestBody接收数据,转换为对象并进行业务处理。在错误处理中,对异常进行了日志记录。
摘要由CSDN通过智能技术生成

前沿

无数个400,415和500换来的经验!

前端

// modify_layer.course是js对象
var data = {
 	"course": modify_layer.course,
 	"sno": parseInt(sno)
}
// 注意要JSON.stringify,另外contentType要配成json的
$.ajax({
	type: "post",
	url: "modifyCourse",									
	data: JSON.stringify(data),
	dataType: "text",
	contentType:"application/json;charset=utf-8",
	success: function(data) {
		if(data == "ok") {
			select();
		} else
			alert("error");

	},
	error: function(e) {
		console.log(e);
	}
});

后端

@RequestMapping(value = "/modifyCourse", produces = "text/html;charset=UTF-8", consumes = "application/json;charset=UTF-8")
@ResponseBody
//    @RequestBody不能在多个参数上同时使用!!!,只能使用在一个参数上,之后自行反序列化
public String modifyCourse(@RequestBody Map<String, Object> data) {
//        不要用toString,那样key上不带双引号,parse会出错。要用toJSONString
       String crsJSON = JSON.toJSONString(data.get("course"));
//        通过crsJSON,解析出couse对象
       Course course = JSON.parseObject(crsJSON, Course.class);
//        基本类型可以直接强制转换获得
       int sno = (int)data.get("sno");

       int i = courseService.modifyCourse(course, sno);
       if (i > 0)
            return "ok";
       else
            return "error";
}

参考

感谢 https://blog.csdn.net/qq_34608620/article/details/80635139

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值