2017-01-19 74 views
-1

我有一個在angularjs客戶端的數據。當我使用$ http.post發送數據到服務器時,我無法讀取服務器上的數據。我不明白我哪裏出了問題? 這是角碼:節點js服務器沒有從angularjs接收數據

var data = $.param({ 
     id:$scope.user_id, 
    }); 
alert(JSON.stringify(data)); 
$http.post('/getdetails',data) 

這裏是節點JS服務器代碼:

app.post('/getdetails',function(req,res){ 
    console.log(req.body); 
    console.log(req.body.id); 

}); 

在服務器日誌輸出:

{} 
undefined 

我並不關心數據我送,我只關心它是否可以在服務器上讀取。

謝謝!

+2

使用[特快]( http://expressjs.com)?您需要使用[body-parsing middleware](http://expressjs.com/en/4x/api.html#req.body)。 –

+0

那裏的狀態是什麼?您需要處理失敗塊中的狀態 – Mithun

+0

是的,我正在使用body-parser – VisheshRaju

回答

0

您正在嘗試使用僅用於GET方法而不是Post的$ .param()來序列化數據。只需直接將您的JSON數據的NodeJS這樣的:

var data = { 
     id:$scope.user_id, 
    }; 
$http.post('/getdetails',data) 

在你標題註明:

"Content-Type" : "application/json" 

所以最終的請求將是這樣的:

$http.post('/getdetails',data,{headers : {"Content-Type" : "application/json"}}) 
+0

嗯,我試過了,它似乎不工作!相同的結果爲準。 「app.use(bodyParser.urlencoded({擴展:假}));」這是包括bodyparser的正確方法嗎? – VisheshRaju

+0

是的也加入這些:app.use(bodyParser.json()); app.use(bodyParser.text()); app.use(bodyParser.urlencoded({extended:false })); –

+0

這樣它將根據請求 –

相關問題