我正在使用AngularJS资源向运行express的节点js服务器发布ajax帖子。但是我无法访问NodeJS端的后有效负载参数。
我有一个服务设置:
angular.module('app.services', ['ngResource'])
.factory('PostService', function($resource) {
return $resource('/postTest');
});
在控制器中我有:
function UserCtrl($scope, PostService) {
//query for the users
$scope.testPost = function() {
var stuff = {firstname: 'some', lastname:'person'};
PostService.save(stuff,function(data) {
console.log('called save on PostService');
});
};
}
我可以看到http标头内的有效负载:
{"firstname":"some","lastname":"person"}
然而,当我到达NodeJS路由来处理它时,我不知道如何访问参数:
(从节点控制台输出):内部测试内容 req.params undefined
app.post('/postTest', function(req, res) {
console.log('inside test stuff');
console.log('req.params ' + req.param('stuff'));
})
我在http://jsfiddle.net/binarygiant/QNqRj/
创建了一个小提琴任何人都可以解释如何在我的NodeJS路线中访问帖子传递的参数吗?
提前致谢
答案 0 :(得分:3)
如果“{”firstname“:”some“,”lastname“:”person“}”在json的帖子正文中?
您可以以不同方式访问它。
使用express.bodyParser()
,req.body.firstname
会获得第一个名称
app.use(express.bodyParser());
然后
app.post('/postTest', function(req, res) {
console.log('inside test stuff');
console.log(req.body.firstname);
})
答案 1 :(得分:0)
您需要在 App
中设置正文解析器例如在ExpressJs 4中,
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));