可比较的 jQuery 函数
$.post("/example/handler", {foo: 1, bar: 2});
将使用 post 参数创建一个请求foo=1&bar=2
。然而
$http.post("/example/handler", {foo : 1, bar: 2});
似乎发送POST
带有正文{"foo":1,"bar":2}
而不是form-uriencoded
版本的请求。为了得到我认为是预期的行为,我需要做类似的事情
myModule.config(function ($httpProvider) {
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
$httpProvider.defaults.transformRequest = function(data){
return _.map(data, function (val, k) { return encodeURI(k) + "=" + encodeURI(val); }).join("&");
}
});
在模块配置中。
$http.post
任何人都可以解释论点处理背后的基本原理吗?是否存在我想要 Angulars 的默认行为或一些我没有看到的隐藏优势的情况?