我做错了吗?当我执行以下操作时,我在/url
$http.post("/url", { something: "something" })
.success(function(data) {
console.log(data);
}).error(function(data){ alert("An error occurred. Please try again."); }
);
答案 0 :(得分:0)
默认情况下,角度将数据编码为Content-Type: application/json
,但您希望它为Content-Type: x-www-form-urlencoded
。后者被jQuery post
设置为默认值,这就是为什么大多数新手都陷入了这个陷阱。
因此,您必须在执行请求之前设置内容类型。
yourApp.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
}]);
现在,在每个http请求之前,内容类型将更改为我们在上面设置的内容。
此post中讨论了相同的主题。
答案 1 :(得分:0)
我遇到了与HTTP标题相关的类似问题,以下情况对我来说在所有情况下都可以正常使用。
var data = {something: "something"};
$http({
method: 'POST',
url: url,
data: data,
//Uncomment this if the problem persists, it's to explicitly state the content type.
//headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})