解决 AngularJs $http 发送post,get请求,SpringMvc无法接受参数的问题。
2017-08-01 15:49
1226 查看
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 的提交格式
默认情况下,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("&"); }
相关文章推荐
- AngularJs中$http发送post或者get请求,SpringMVC后台接收不到参数值的解决办法
- AngularJs中$http发送post或者get请求,SpringMVC后台接收不到参数值的解决办法
- angular的$http发送post,get请求无法传送参数的问题
- java 接受和发送http,post,get请求,参数中文乱码解决。
- 安卓发送Get、Post请求,解决参数乱码问题
- SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析
- 关于AngularJs中$http post、get 发送和接受参数详解
- AngularJS出现$http异步后台无法获取请求参数问题的解决方法
- SpringMVC中使用Ajax POST请求以json格式传递参数服务端通过request.getParameter("name")无法获取参数值问题分析
- springMvc 完美解决 multipart/form-data 方式提交请求 在 Filter 中 ServletRequest.getParameter方法 获取不到参数的问题
- 关于 HTTP GET/POST 请求参数长度最大值的问题
- 解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
- 关于angularjs中$http POST请求参数的问题
- springMvc 完美解决 multipart/form-data 方式提交请求 在 Filter 中 ServletRequest.getParameter方法 获取不到参数的问题
- GET、POST请求处理中文问题(用HttpURLConnection模拟发送请求)
- angularjs-$http.post请求传递参数,后台Controller接受不到原因
- 解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
- 解决AngularJS Http请求参数问题
- AngularJs的$http发送POST请求,php无法接收Post的数据解决方案
- 关于angularjs中$http POST请求参数的问题