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

时间:2015-08-02 10:33:28

标签: javascript angularjs node.js

我无法通过我从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()中,我也未定义。好像身体解析器不起作用或我错过了其他东西。

2 个答案:

答案 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();

我希望它能解决你的问题。但我不确定它为什么会起作用。我希望有人解释一下。

相关问题