将数据从Angular发送到Express

时间:2015-08-03 12:47:55

标签: javascript angularjs express

我不明白为什么我无法使用Angular.js Express获取POST表格的数据。

Angular Part:

$http.post(baseURL+"/search", data).success(function(data, status) {
        $scope.results = data;
    });

快递部分:

app.use(bodyParser.urlencoded({ extended: false })); 
app.post('/search', function(req, res){
    console.log(req.query, req.body, req.params);
});

日志为{} {} {}。 我无法弄清楚我做错了什么。

我也尝试过:

$http({
    method: "POST",
    url : baseURL+"/search",
    data : {name: 'tete'},
    headers: {'Content-Type': 'application/json'}
}).success( function(data){
    console.log(data);
});

它也不起作用。

2 个答案:

答案 0 :(得分:4)

Angular默认将数据发送为JSON。

$httpProvider.defaults.headers.post //Content-Type: application/json

您只包含urlencoded正文解析器中间件。您需要包含bodyParser.json()

app.use(bodyParser.json()); 
app.post('/search', function(req, res){
    console.log(req.body);
});

答案 1 :(得分:1)

Angular $http服务似乎将数据作为JSON发送,并且您缺少相应的bodyParser。

尝试在快捷方式的POST路线之前用app.use(bodyParser.json());替换bodyParser。