angular $http post 方法有些瀏覽器不支援原因解答
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老師的視訊程式碼。