在答案的最后一个例子中:
var transform = function(data){ return $.param(data); } $http.post("/foo/bar",requestData,{ headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},transformRequest: transform }).success(function(responseData) { //do stuff with response });
但是,这个问题是transformRequest:transform会覆盖Angular预先构建的函数数组.
来自Angular docs:
To globally augment or override the default transforms,modify the $httpProvider.defaults.transformRequest and $httpProvider.defaults.transformResponse properties. These properties are by default an array of transform functions,which allows you to push or unshift a new transformation function into the transformation chain. You can also decide to completely override any default transformations by assigning your transformation functions to these properties directly without the array wrapper. These defaults are again available on the $http factory at run-time,which may be useful if you have run-time services you wish to be involved in your transformations.
Similarly,to locally override the request/response transforms,augment the transformRequest and/or transformResponse properties of the configuration object passed into $http.
如果我想全局应用我的变换函数,我会这样做
$httpProvider.defaults.transformRequest.unshift(myFunction)要么
$httpProvider.defaults.transformRequest.push(myFunction)