2016-04-28 31 views
3

をフェッチ使用してデータを転記することはできません。にはJavaScriptを有効にし、私は<code>fetch</code> APIを使用して自分のサーバーに<code>POST</code>データにしようとしていると私はやるたびに、私は空のボディで終わるAPI

私がfetch documentationから知る限り、データを投稿するには、メソッドキーを "POST"に設定し、本体キーに文字列またはFormDataオブジェクト(または他のもの)を渡す必要があります。私はまた、リクエストボディをログに記録し、それに応答して、それをエコー本の背面に明示サーバーを持っている

var formData = new FormData(); 
formData.append("test", "woohoo"); 
formData.append("foo", "bar") 
// prints out contents of formData to show that it has contents! 
formData.forEach(function(key, value) { 
    console.log(`${key}: ${value}`); 
}); 

fetch("/fetch", { 
    method: "POST", 
    body: formData 
}).then(function(response) { 
    return response.json(); 
}).then(function(json) { 
    // Logs empty object 
    console.log(json); 
}).catch(function(err) { 
    console.log(err); 
}); 

は、ここで私が期待するとしてだけで動作していない単純な例です。

app.post("/fetch", function(req, res) { 
    // Logs empty object :(
    console.log(req.body); 
    res.send(JSON.stringify(req.body)); 
}); 

私はfetchリクエストのボディとしてformDataを追加したが、何も今までに通過するようです。

Please find my test files in this gist hereと助けて!あなたのノードサーバがデフォルトでお送りします(何FormDataである)を正しくマルチパートフォームを理解していないので、

+0

私はあなたが新しいテニスボールを投げる '欠けていると信じて()'、あなたがフェッチするために必要なすべてです。 :) – markthethomas

答えて

2

はこれがあります。

あなたはフロントエンドのコードに触れることなく、フォームを簡単に読み取ることができ、サーバー上のnode-mulipartyを使用することができます。以下のような

何か:あなたのindex.js

var multiparty = require('multiparty'); 
var app = express(); 

app.post("/fetch", function(req, res) { 
    var form = new multiparty.Form(); 

    form.parse(req, function(err, fields, files) { 
    console.log(fields); 
    res.send(JSON.stringify(fields)); 
    }); 
}); 

は、それが正常に機能を紹介します。そこbody-parserでこの作品を作るための方法かもしれないが、私はどのように自分自身を知りません。

関連する問題

 関連する問題