2017-01-08 58 views
0

我無法獲取express nodejs.h的http post方法中的數據。我從angular2發佈數據。當我檢查網絡部分的鉻,有效載荷是可見的,但相同的數據是在app.post方法空白。請幫助我。NodeJS http發佈數據爲空

angular2代碼

this.headers = new Headers(); 
    this.headers.append('Content-Type', 'x-www-form-urlencoded'); 

    let body = JSON.stringify({name:"Lionel Messi"}); 



return this.http 
.post('http://localhost:8081/save',body 
    ,this.headers); 

} 

代碼的NodeJS在node.js中

var bodyParser = require("body-parser"); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json()); 

app.post('/save', function (req, res) { 
console.log("Got a POST request for the homepage"); 

console.log(req.body);// output - {} 
res.send('Hello POST'); 
}) 

Network Section in Chrome....payload is proper

+0

你可以上傳一些代碼 – Sumeet

+0

嘗試改變 '的Content-Type', 'X WWW的形式進行了urlencoded' 到 '內容類型', '應用/ JSON的' – refactor

+0

已經試過了,但不工作 – user3107338

回答

0

alert方法是行不通的。您需要使用console.log("Hello");

第二件事是讓身體數據,使用req.body.name

我編寫代碼的方式是一樣的下方,它的工作原理

$http({ 
    method: 'POST', 
    url: 'http://localhost:8081/save', 
    data: {name:"Lionel Messi"} 
}) 
.success(function(data) { 
    return data 
    }) 
.error(function(error) { 
    // handle error 
}); 

你可以嘗試其他的方法是:

$http.post('http://localhost:8081/save', {name:"Lionel Messi"}) 
.then(function(data) {return data}) 
.catch(function() {console.log("Error Occured");}); 
+0

對不起,這是錯誤的,更正 – user3107338

+0

你看到你的服務器和客戶端api簽名是不同的。一個是/ save,另一個是/ api。 @ user3107338 – Sumeet

+0

糾正了這一點......再次爲此感到非常抱歉。 API是相同的,即使數據從客戶端正確發送,但nt能夠在服務器 – user3107338

0

您可以這樣做 - 假設您已通過發佈方法從您的瀏覽器發送用戶名和密碼。

app.post("/ url,function(request,response) 
{ var username=request.body.username; 
var password=request.body.password;}) 
+0

在請求。身體我變空 – user3107338

+0

首先檢查客戶端是否正確發送數據。 –

+0

如果您在客戶端完美地發送它,您可以輕鬆地在服務器上接收它 –