通常从jQuery的ajax转用angular的$http服务的时候,会遇到后台获取不到值的情况,这是因为
post请求的请求体的两种格式
- 1.字符串: ‘name=name&password=password’
这种格式的请求体,需要配置请求头 ‘Content-Type’:’application/x-www-form-urlencoded’ - 2.json: {name:’name’,password:’password’}
这种格式的请求体,需要配置请求头 ‘Content-Type’:’application/json;charset=UTF-8’
ajax和$http区别
- 在jquery中,官方文档解释contentType默认是 application/x-www-form-urlencoded; charset=UTF-8,即第一种
- 在angular的$http中,默认是第二种,所以使用$http(config)提交请求体,config中的data项必须是json格式的值。
解决办法
此时我们可以配置$http(config)中的headers中的Content-Type值为’application/x-www-form-urlencoded’,然后就能按照ajax的用法尽情使用$http服务啦