最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

解决angular的$http.post()提交数据时后台接收不到参数值问题的方法_AngularJS

来源:动视网 责编:小采 时间:2020-11-27 21:47:01
文档

解决angular的$http.post()提交数据时后台接收不到参数值问题的方法_AngularJS

解决angular的$http.post()提交数据时后台接收不到参数值问题的方法_AngularJS:写此文的背景:在学习使用angular的$http.post()提交数据时,后台接收不到参数值,于是查阅了相关资料,寻找解决办法。写此文的目的:通过上面提到的文章中的解决之道,结合自己的经验,总结了如下发现。前端:html,jquery,angular后端:java,s
推荐度:
导读解决angular的$http.post()提交数据时后台接收不到参数值问题的方法_AngularJS:写此文的背景:在学习使用angular的$http.post()提交数据时,后台接收不到参数值,于是查阅了相关资料,寻找解决办法。写此文的目的:通过上面提到的文章中的解决之道,结合自己的经验,总结了如下发现。前端:html,jquery,angular后端:java,s
 写此文的背景:在学习使用angular的$http.post()提交数据时,后台接收不到参数值,于是查阅了相关资料,寻找解决办法。

写此文的目的:通过上面提到的文章中的解决之道,结合自己的经验,总结了如下发现。
前端:html,jquery,angular
后端:java,springmvc
一、平常使用的post提交和接收方式
前端使用jquery提交数据。

后端java接收:

@Controller
public class UserController {
 @ResponseBody
 @RequestMapping(value="/loginForm",method=RequestMethod.POST)
 public User loginPost(User user){
 System.out.println("username:"+user.getName());
 System.out.println("password:"+user.getPassword());
 return user;
 }
}
model(不要忘记get、set方法):
public class User {
 private String name;
 private String password;
 private int age;
 
 //setter getter method

}

后台打印:

username:jquery
password:pwd

调用接口查看到的前端返回结果:

二、使用angularJs的post方法提交

<div ng-app="myApp" ng-controller="formCtrl">
 <form novalidate>
 UserName:<br>
 <input type="text" ng-model="user.username"><br>
 PassWord:<br>
 <input type="text" ng-model="user.pwd">
 <br><br>
 <button ng-click="login()">登录</button>
 </form>
</div>

js代码:

后台打印结果:

username:null
password:null:

查看前端:

三、解决angular提交post问题。
相信看过上面提到的哪怕文章的人已经知道怎么解决问题了吧。文中是更改了angular的提交方式,使得angular的提交数据方式更像jquery的。

我试过,也是行得通的。然后我又试了另外一种方式。如下:

前端不变,依然是:

后台变了,只是在User前加上@RequstBody,因为angular提交的是json对象:

作用:

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

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

使用时机:

A) GET、POST方式提时, 根据request header Content-Type的值来判断:

application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute也可以处理,当然@RequestBody也能处理);
multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据);
其他格式, 必须(其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理);
B) PUT方式提交时,根据request header Content-Type的值来判断:

application/x-www-form-urlencoded, 必须;
multipart/form-data, 不能处理;
其他格式,必须;
说明:request的body部分的数据编码格式由header部分的Content-Type指定;

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

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

json对象转json字符串:JSON.stringify(jsonObj);

文档

解决angular的$http.post()提交数据时后台接收不到参数值问题的方法_AngularJS

解决angular的$http.post()提交数据时后台接收不到参数值问题的方法_AngularJS:写此文的背景:在学习使用angular的$http.post()提交数据时,后台接收不到参数值,于是查阅了相关资料,寻找解决办法。写此文的目的:通过上面提到的文章中的解决之道,结合自己的经验,总结了如下发现。前端:html,jquery,angular后端:java,s
推荐度:
标签: 数据 后台 参数
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top