angularjs $http post编码问题

    晚上写了个小的angularjs程序,使用$http.post请求时,发现后台不能正常解析post的数据,经过研究发现,post请求的数据在chrome 开发者工具下显示在Form Data中,但angularjs post的请求显示的数据在Request Payload中,显然angular js的默认处理方式与以前jquery有所不同导致了问题。

    后经过一翻研究并结合万能的google,找到了如下解决方法:

smartoa.config(['$httpProvider', function($httpProvider) {
    $httpProvider.defaults.headers.post["Content-Type"] = 
            "application/x-www-form-urlencoded";
    $httpProvider.defaults.
        transformRequest.unshift(function(data,
    headersGetter) {
        var key, result = [];
            for (key in data) {
                if (data.hasOwnProperty(key)) {
                    result.push(encodeURIComponent(key) + "="
                    + encodeURIComponent(data[key]));
                }
            }
        return result.join("&");
    });
}]);

    具体原因是请求的数据编码问题导致了服务器端不能正常解析,采用如上方法角色了此问题。上述代码源自于stackoverflow: http://stackoverflow.com/questions/11442632/how-can-i-post-data-as-form-data-instead-of-a-request-payload