AngularJs,完整的$ http帖子和简写的$ http.post之间的区别

时间:2015-10-26 17:40:50

标签: angularjs

当我使用两种不同的方法(完整$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
},

他们之间有什么区别?我以为他们是一样的。

1 个答案:

答案 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)

Documentation

  

post(url,data,[config]);

Read this用于所有可用配置。