AngularJs中$http发送post请求,SpringMVC后台接收不到参数值的 后台注解解决解决办法

导致这个问题的原因:

使用AngularJS的$http进行POST请求,默认的Content-type为application/json; charset=UTF-8

为了让SpringMVC的Controller能够接收到数据,进行POST请求时的Content-type应修改为application/x-www-form-urlencoded; charset=UTF-8

默认情况下,jQuery传输数据使用Content-Type: x-www-form-urlencodedand和类似于"name=zhangsan&age=18"的序列,然而AngularJS,传输数据使用Content-Type: application/json和{ "name": "zhangsan", "age": "18" }这样的json序列。

下图为POST请求默认的Content-type



解决办法: 我有试图过改AngularJS的源代码,但是没有成功, 其实本质上来说不该任何AngularJS的源代码事最好的,所以找到一种只改后台的代码,而且很简单,使用@ResponseBody注解 并且对象取值使用@ResponseBody即可


//public ResponseData insert(@PathVariable WeiBoUsers user)  默认为这种取值方式
//public ResponseData insert(@RequestBody WeiBoUsers user) 因为angular js前台使用的对象传输方式,所以后台加@ResponseBody注解并用@ResponseBody接收参数
@ResponseBody
@RequestMapping(value = "/new",method = RequestMethod.POST)
public ResponseData insert(@RequestBody WeiBoUsers user){
    weiBoUserService.insert(user);
    return new ResponseData(user);
}

其他修改的方法请参考以下链接:

https://blog.csdn.net/a3025056/article/details/78263663



猜你喜欢

转载自blog.csdn.net/Master_Shifu_/article/details/80566304