angularJS发起$http.post请求后台收不到数据解决方案

AngularJS发起$http.post请求

代码如下:

$http({  
    method:'post',  
    url:'post.php',  
    data:{name:"aaa",id:1,age:20}  
}).success(function(req){  
    console.log(req);  
})  

这时候你会发现收不到返回的数据,结果为null,这是因为要转换成form data。
解决方案:

配置$httpProvider:

var myApp = angular.module('app',[]);  
 myApp.config(function($httpProvider){  

   $httpProvider.defaults.transformRequest = function(obj){  
     var str = [];  
     for(var p in obj){  
       str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));  
     }  
     return str.join("&");  
   }  

   $httpProvider.defaults.headers.post = {  
        'Content-Type': 'application/x-www-form-urlencoded'  
   }  

});  

或者在post中配置:

$http({  
   method:'post',  
   url:'post.php',  
   data:{name:"aaa",id:1,age:20},  
   headers:{'Content-Type': 'application/x-www-form-urlencoded'},  
   transformRequest: function(obj) {  
     var str = [];  
     for(var p in obj){  
       str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));  
     }  
     return str.join("&");  
   }  
}).success(function(req){  
       console.log(req);  
})  
原文地址:https://www.cnblogs.com/gongshunkai/p/6752647.html