获取POST到Express.js端点的ng-model值

时间:2014-07-28 12:35:46

标签: node.js angularjs express

我正在使用AngularJS创建一个Node.js应用程序。

我想使用Angular进行简单的POST。此POST应该向我的服务器发布几个值,我可以使用console.log在其中看到它们。

在我的HTML代码中,我使用ng-model和一个ng-click的按钮构建它。

我可以告诉我的Node.js服务器正在被命中,因为它在控制台中输出post called

但是,我一直试图阅读有关如何读取POST值的信息,但我还没有找到解决方案。

如何修改我的代码以在Express.js端点中阅读serialKeygameTitle

我的HTML代码:

<div class="input-group" ng-controller="CreateController">
    <p>Serial key:<br/>
        <input class="form-control"  ng-model="serialKey" />
    </p>

    <p>Game:<br/>
        <input class="form-control" ng-model="gameTitle" />
    </p>

    <span class="input-group-btn">
        <button class="btn btn-default"
        ng-click="postNewIsbn(serialKey,gameTitle)">Add</button>
    </span>
</div>

角度控制器代码:

app.controller('CreateController',function($scope, $http) {
    var url = '/api/serials';
    $scope.postNewIsbn = function(serial, game) {
        $http.post(url, {
            serial: serial,
            gametitle: game
        })
        .success(function (data) {
            $scope.data.status = 'success';
        })
        .error(function(error) {
            $scope.data.error = error;
        });
    };
});

Express.js端点

app.post('/api/serials',function(req,res){

    console.log(req.body);
    console.log('post called');
});

2 个答案:

答案 0 :(得分:1)

似乎是设置内容类型标题的问题。在您的角度应用程序中,您可以在初始化模块后或在配置函数中使用此行设置post post请求的defaultHeaders

$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';

请记住在设置此标题

时注入$ httpProvider依赖项

<强>更新

您可能需要配置快递才能将bodyParser与此行一起使用:

app.use(express.bodyParser());

答案 1 :(得分:0)

req.param(名称

尝试检索随请求传递的数据时,req.param()函数会检查以下内容以查找参数:

  1. req.params
  2. req.body
  3. req.query
  4. 请参阅文档here

    另外,尝试将POST请求中的content-type标头显式设置为&#34; application / json&#34;。