如果我使用以下内容:
一个)
angularApp.config(function ($httpProvider) {
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
$httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
$httpProvider.defaults.headers.common['Accept'] = 'application/json';
$httpProvider.defaults.transformRequest = function(data) {
if (data === undefined) {
return data;
}
return $.param(data);
}
});
相对
b)
angularApp.config(function ($httpProvider) {
$httpProvider.defaults.headers.common['Content-Type'] = 'application/x-www-form-urlencoded';
$httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
$httpProvider.defaults.headers.common['Accept'] = 'application/json';
$httpProvider.defaults.transformRequest = function(data) {
if (data === undefined) {
return data;
}
return $.param(data);
}
});
然后当我使用 a$http.post
或 a$resource
时POST
a) 是我想要的,因为我在 Chrome 开发工具中得到了这个:
Form Data:
User[old_password]:xxx
User[new_password]:yyyy
User[new_password_confirm]:yyyy
b) 不是我想要的,因为我在 Chrome 开发工具中得到了这个:
Request Payload:
User%5Bold_password%5D=xxx&User%5Bnew_password%5D=yyyy&User%5Bnew_password_confirm%5D=yyyy
这让我很困惑,因为我希望 common 可以申请包括 post 在内的所有内容。
a) 和 b) 之间的唯一区别是 b) 具有
$httpProvider.defaults.headers.**common**['Content-Type'] = 'application/x-www-form-urlencoded';
我正在使用 angular 1.2.6
。
问题也发生在1.2.9
请指教。