2017-01-08 11 views
0

express nodejのhttp postメソッドでデータを取得できません。私はangular2からデータをポストしています。クロムのネットワークセクションで調べると、ペイロードが表示されますが、app.postメソッドで同じデータが空白になります。お手伝いしてください。 Node.jsの中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コード

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

は、 'コンテンツタイプ' を変更してみてくださいいくつかのコードをアップロードすることができ、 '-www-form-urlencodedで返しX' 'のContent-Type'、 'アプリケーション/ JSON' – refactor

+0

には、ことを試してみましたが、動作しません。 – user3107338

答えて

0

alert方法は機能しません。あなたはconsole.log("Hello");

第二のものは、本体データを取得することです使用する必要があり、コードを書く私の方法は、以下のようなもので、それはあなたが試すことができ

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

他の方法がある作品req.body.name

を使用します。

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

申し訳ありませんが、間違って修正されました – user3107338

+0

あなたの両方のサーバーとクライアントのAPIの署名が異なっていますか? 1つは/ saveで、もう1つは/ 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

クライアント側で完璧に送信すれば、簡単にサーバー上で受信することができます –