900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 解决 AngularJs $http 发送post get请求 SpringMvc无法接受参数的问题。

解决 AngularJs $http 发送post get请求 SpringMvc无法接受参数的问题。

时间:2024-06-10 08:30:16

相关推荐

解决 AngularJs $http 发送post get请求 SpringMvc无法接受参数的问题。

1.问题原因

默认情况下,jQuery传输数据使用Content-Type: x-www-form-urlencodedand和类似于"name=zhangsan&age=18"的序列,

然而AngularJS,传输数据使用Content-Type: application/json和{ "name": "zhangsan", "age": "18" }这样的json序列。

2.解决办法

A. 服务端进行修改,在Controller接收参数的方法中,对象前加 @RequestBody (注:要用对象的方式来接参数)

作用:

i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;

ii) 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。

ok ,但是解决了angular问题之后,发现jquery按照原来的方式提交post请求会报错(错误码415)。

如下方式可以解决jquery提交问题:

json对象转json字符串:JSON.stringify("name": "zhangsan", "age": "18");

B. 客户端修改(推荐)

方案1 更改$http 的提交格式

$http.post(url,{},{params:{"name": "zhangsan", "age": "18"}}).success(function(data){});$http.get(url,{params:{"name": "zhangsan", "age": "18"}}).success(function(data){});

方案2 修改请求头,Content-Type 的值,并将传输的对象进行序列化。

headers:{'Content-Type':'application/x-www-form-urlencoded'}

transformRequest: function(obj) { var str = []; for (var s in obj) { str.push(encodeURIComponent(s) + "=" + encodeURIComponent(obj[s])); } return str.join("&"); }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。