2015-08-03 94 views
2

我不明白爲什麼我無法使用Angular.js Express獲取我POST形式的數據。將數據從Angular發送到Express

角部位:

$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); 
}); 

它沒有工作過。

回答

4

Angular默認發送數據爲JSON。

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

您只包含urlencoded body-parser中間件。您需要包含bodyParser.json()

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

似乎角$http服務發送數據作爲JSON和你缺少適當bodyParser。

嘗試使用Express在POST路線之前替換您的bodyParser並使用app.use(bodyParser.json());

+0

謝謝!它終於有效! – Prox