我正在使用AngularJS创建一个Node.js应用程序。
我想使用Angular进行简单的POST。此POST应该向我的服务器发布几个值,我可以使用console.log
在其中看到它们。
在我的HTML代码中,我使用ng-model
和一个ng-click
的按钮构建它。
我可以告诉我的Node.js服务器正在被命中,因为它在控制台中输出post called
。
但是,我一直试图阅读有关如何读取POST值的信息,但我还没有找到解决方案。
如何修改我的代码以在Express.js端点中阅读serialKey
和gameTitle
?
我的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');
});
答案 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.params
req.body
req.query
请参阅文档here。
另外,尝试将POST请求中的content-type标头显式设置为&#34; application / json&#34;。