1

我正在以下站点 http://docs.angularjs.org/api/ng .$http#methods_post上阅读 angularjs $http.post快捷方法

它接受以下 3 个参数。

post(url, data, config)

目前我面临一个问题,如何从我的视图中传递数据。这是我的视图代码,它要求用户输入 ID 和 ContactNumber。

<div data-ng-controller="postreq">
    <form>
    RequestID:<input type="text" data-ng-model="request.Id"/>
    ContactNo:<input type="text" data-ng-model="request.newcontact"/>
    <button data-ng-click="add()">Add</button>

    </form>
</div>

这是我在我的 Angularjs 控制器中尝试的,但它不起作用.. 不知道如何获取 request.Id 和 request.newcontact 的输入值。

function postreq($scope, $http) {

    $scope.add = function ()
    {
     $http.post(
    '/api/request',
    JSON.stringify(**?????? here i am confused how to pass data**),
    {
        headers: {
            'Content-Type': 'application/json'
        }
    }
).success(function (data) {
    $scope.request= data;
});

}
4

3 回答 3

3

这是一个如何使用 Angular 发布 $http 帖子的基本示例:

 $http({
    cache: false,
    url: "/api/request",
    method: "POST",
    data: {email: "my_login_email@example.com", password: "123456"}
  }).
  success(function (data) ->
    // here the "data" parameter has your response data
  ).
  error(function () ->
    // if you are here something is not going so good
  )

还要记住,Angular 不会像普通表单那样发布数据(这非常重要,具体取决于您的后端系统,例如在 PHP 中您将无法使用 $_POST)。为了做到这一点,你需要做更多的工作:

// your module
myModule = angular.module("myModule ", []);
// you module config
myModule.config (["$httpProvider", function($httpProvider) {
   $httpProvider.defaults.transformRequest = function (data) {
       if data == undefined {
         return data
       }
       return $.param(data)
   }
   $httpProvider.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded; charset=UTF-8"
}])

还要注意 $.param 它是 jQuery。如果您不使用 jquery,您可以找到其他方法来执行此操作。

于 2013-11-12T10:44:28.907 回答
1

$http在内部做了一些事情,这样我们作为应用程序开发人员就不必考虑它们了。

  1. 如果内容需要 JSON.stringify
  2. 添加适当的标题
  3. 允许在请求之前/之后进行拦截
  4. 处理响应的缓存(与您的问题无关,但很高兴知道)

所以,这意味着在使用 时$http,我们不需要显式地做这些事情。您可以将代码更改为:

$http.post('/api/request', $scope.request);

这将实现您的问题所需的一切。顺便说一句,这将返回一个promisewithsuccesserror回调方法。这些可用于处理响应。

于 2013-11-12T09:33:51.707 回答
0

您可以使用以下语法:

$http.post(
'/api/request',
$scope.request,
{
    headers: {
        'Content-Type': 'application/json'
    }
});
于 2013-11-12T09:13:30.473 回答