我无法通过我从Angular应用程序制作的POST方法获取params。我试着在这里寻找答案,甚至复制/粘贴一些例子,但似乎没有任何效果。
节点代码:
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');
});
角色代码:
$ 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);
})
}
我可以在网络面板上看到开发人员工具发送的数据,我甚至按预期得到了201的http代码,但我没有收到回复。在NodeJS中的post route的console.log()中,我也未定义。好像身体解析器不起作用或我错过了其他东西。
答案 0 :(得分:1)
角度$http.post
函数将发送JSON正文而不是urlencoded正文。
添加此中间件以解析JSON对象:
app.use(bodyParser.json());
答案 1 :(得分:0)
我遇到了同样的问题,这就是我解决问题的方法。
更改此部分
response.status(201).json(request.body.name);
到
response.write(request.body.name);
response.end();
我希望它能解决你的问题。但我不确定它为什么会起作用。我希望有人解释一下。