angular 中,post方法传输时HTTP请求的Content-Type形式为json形式,此形式在很多浏览器中不兼容,目前比较经典的,也是兼容性比较好的形式为x-www-form-urlencoded。所以需要在angular中进行形式的转换。另外传输参数形式应为a&b的形式。所以需要对参数进行处理,数显拿到参数,然后将参数进行拼接,拼接之前,将参数中的特殊字符转换为16进制(比如说& 转换为%26)。
处理代码(common.js)如下:
let commonMod=angular.module('common', []);
commonMod.config(function ($httpProvider){$httpProvider.defaults.transformRequest=function (obj){
let arr=[];
for(let name in obj){
arr.push(`${encodeURIComponent(name)}=${encodeURIComponent(obj[name])}`);
}
return arr.join('&');
};
$httpProvider.defaults.headers.post['Content-Type']='application/x-www-form-urlencoded';
});
调用形式:
<!DOCTYPE html>
<html ng-app="test">
<head>
<meta charset="utf-8">
<title></title>
<script src="angular.js" charset="utf-8"></script>
<script src="common.js" charset="utf-8"></script>
<script>
let mod=angular.module('test', ['common']);
mod.controller('main', function ($http){
$http.post('post.php', {a: 22, b: 88}).then(res=>{
alert(res.data);
}, ()=>{
alert('失败');
});
});
</script>
</head>
<body ng-controller="main">
</body>
</html>
本文代码是blue老师的视频代码。