改變angular1.x的ajax預設資料提交型別

renkind發表於2017-09-20

存起來方便以後拷貝

關鍵程式碼如下:

.config(function($httpProvider) {
//定義配置檔案
//轉換angular預設的引數提交資料型別
 $httpProvider.defaults.headers.put['Content-Type'] = 'application/x-www-form-urlencoded';
 $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
})


//轉換髮送的引數資料型別
function buildPostParams(params){
        var paramsArray = [];
        Object.keys(params).forEach(function(key){
          //console.log(params[key] instanceof Object);
          if(params[key] instanceof Array){
            params[key].forEach(function(val){
              paramsArray.push(key+'['+params[key].indexOf(val)+']'+'=' + encodeURIComponent(val));
            });
          }else if(params[key] instanceof Object){
            Object.keys(params[key]).forEach(function(keys){
              paramsArray.push(key+'['+keys+']'+'=' + encodeURIComponent(params[key][keys]));
            })
          }else{
            paramsArray.push(key + '=' + encodeURIComponent(params[key]));
          }
          
        })
        params = paramsArray.join("&");
return params;
    }



$scope.getToken=function(){
$scope.user='tjdx';
$scope.psw='abc123';
$scope.type='password';
// $scope.type='authorization_code';
$scope.apiInfo={
 'grant_type': $scope.type,
 'loginname': $scope.user,
 'password': $scope.psw
};
$scope.apiInfo2=buildPostParams($scope.apiInfo);
console.log($scope.apiInfo2);

           $http({
               method: 'POST',
               url: apiUrl2+'/api/oauth2/access_token',
              data:$scope.apiInfo2,
              dataType:'json',
               headers : {'client_id' : clientId}
           }).then(function successCallback(data) {
                   // 請求成功執行程式碼
                  console.log(data.data.access_token)
               }, function errorCallback() {
                   // 請求失敗執行程式碼
                   console.log('ERROR!')
           });
            

相關文章