angularjs $http POST统一配置方法

<!DOCTYPE html>
<html lang="en" ng-app='test'>
<head>
	<meta charset="UTF-8">
	<title>angular 统一配置</title>
	<script src="angular.js"></script>
	<script>
	let mod = angular.module('test',[]);
	mod.config(function($httpProvider){
		$httpProvider.defaults.transformRequest = function(obj){
			let arr=[];
			for(let name in obj){
				arr.push(`${name}=${obj[name]}`)
			}
			return arr.join('&')
		}
		$httpProvider.defaults.headers.post['Content-Type']='application/x-www-form-urlencoded';
	})
	mod.controller('main', function($scope,$http){

		$scope.calc = function(){
			$http({
				method: 'POST',
				url: '1.php',
				data: {
					a: $scope.a,
					b: $scope.b
				}
			}).then(res=>{
				alert(res.data)
			},()=>{
				alert('error!')
			});
		}
	})
	</script>
</head>
<body ng-controller='main'>
	<input type="text" ng-model='a'>
	<input type="text" ng-model='b'>
	<input type="button" value='计算' ng-click='calc()'>
</body>
</html>

今天学习了angularjs的$http中的POST方法,其中重要的及踩坑的地方记录一下.

1、$httpProvider.defaults.headers.post['Content-Type']='application/x-www-form-urlencoded';

当时非常自信,默写的,不是抄的,结果就悲剧了,最后怎么样也出不来。

查看network中的RequestHeaders发现:原生ajax或者jquery之类的,

content-type:application/x-www-form-urlencoded,格式诸如  a=1&b=2

然而 angular却是content-type:application/json,格式诸如 {a:1,b:2}

这就导致服务器不认识发送来的信息,所以要手动改成服务器认识的格式。

然而这就完了吗?没有,这只是声明了格式会给你服务器这种格式,

下面的transformRequest才是真正改变了发送数据的格式

2、$httpProvider.defaults.transformRequest = function(obj){

       //这里的obj就是$http中的data        

       let arr = [];

         for(let name in obj){

             arr.push[`${name}=${obj[name]}`];

         }

        return arr.join('&')

}

打死都不相信,里面的是``,而不是'',深陷泥潭无法自拔。

另外,找了很久也没找到,``到底是什么意思。

再次感谢智能社blue老师,他现在加盟开课吧了,没事可以去他开课吧官网看看。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值