当我使用两种不同的方法(完整$http.post
和简写$http.post
)将app.js中的对象数据发布到家庭控制器时,如下所示:
var book = {
"title" : $scope.addTitle,
"publisher" : $scope.publisherSelected[0],
"authors" : $scope.authorsSelected,
"genres" : $scope.genresSelected
};
//This one posts data successfully:
$http({
method : 'POST',
url : '../administrator/addBook',
data : book,
}).
//This one fails:
$http.post("../administrator/addBook", {
data : book
},
他们之间有什么区别?我以为他们是一样的。
答案 0 :(得分:2)
当你使用简写post
方法时,第二个参数本身就是数据,所以不需要在那里添加包装{data:book}
(添加它必须违反与服务器的合同,你可以检查使用浏览器的网络控制台发送的数据。因此,两者之间的区别仅在于您设置配置的方式。
所以
$http({
url: 'someurl',
data: someData, //Post data 2nd argument in http.post
method: 'POST', //implicit in case of http.post
config: { //This goes in as third argument
headers: someheadersObj,
transformRequest : someTransformFunc,
...
}
});
将是
$http.post('someurl', book, {
headers: someheadersObj,
transformRequest : someTransformFunc,
...
})
即你需要这样做:
$http.post("../administrator/addBook", book)
post(url,data,[config]);
Read this用于所有可用配置。