无法从Angular应用程序获取NodeJS中的POST数据

我不能从我从一个Angular应用程序做的POST方法得到参数。 我试着在这里寻找答案,甚至复制/粘贴一些例子,但似乎没有任何工作。

节点代码:

var express = require('express'); var app = express(); var bodyParser = require('body-parser'); app.use(bodyParser.urlencoded({ extended: false })); app.use(express.static('public_html')); app.post('/test', function (request, response) { console.log(request.body.name) response.status(201).json(request.body.name); }); app.listen(8787,function() { console.log('Listening on 8787'); }); 

Angular代码:

$ scope.postData = function(){

  $http.post('/test',{name: $scope.name}).success(function(data,status) { console.log('SUCCESS: ' + status); console.log(data); }).error(function(error) { console.log('ERROR'); console.log(data); }) } 

我可以在开发人员工具的networking面板上看到数据发送,我甚至可以得到201的http代码,但是我没有收到回复。 在NodeJS的post路由的console.log()中,我也没有定义。 看起来像身体分析器不工作,或者我错过了别的东西。

angular$http.post函数将发送一个JSON正文,而不是一个urlencoded正文。

添加这个中间件来parsingJSON对象:

 app.use(bodyParser.json()); 

我有同样的问题,这就是我解决它的方法。

改变这个部分

response.status(201).json(request.body.name);

response.write(request.body.name);

response.end();

我希望它能解决你的问题。 但我不知道为什么它的工作。 我希望有人解释一下。