1. 程式人生 > >angular $http post 方法有些瀏覽器不支援原因解答

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老師的視訊程式碼。