2017-06-15 11 views
0

私はボディパーサを使用しており、フロントエンドに反応しています。 ユーザーを作成しようとしています。フロントエンドからのフォームが正しく受信されないbackend nodejsのreq.bodyに

registering (e) { 
    e.preventDefault() 
    let form = e.target 
    let name = form.querySelectorAll('input')[0].value 

    fetch('http://localhost:5000/createacc', { 
    method: 'POST', 
    headers: {'Content-Type':'application/x-www-form-urlencoded'}, 
    mode: 'no-cors', 
    body: JSON.stringify({name: name}) 
    }) 
以下

バックエンド受信部である:

req is ... { '{"name":"Smiley"}': '' } 

function create (req, res, next) { 
    console.log('req is ...', req.body) 
} 

現在コンソールログは、このされ、以下にバックエンドサーバからデータをフェッチするの先端側であります

このような情報を正しく使用することはできませんか?

答えて

1

はい、部分的に正しいです。解析する必要がある文字列を受け取りました。要求を送信するときにJSON.stringify()を使用する必要はありません。 また、オブジェクトを送信することにより、コンテンツタイプapplication/jsonを使用する必要があります。その可能性は、ボディパーサーミドルウェアも含めることを忘れている可能性があります。

https://www.npmjs.com/package/body-parser

0

Content-Typebodyが矛盾しているためです。 Content-Typeはコンテンツがx-www-form-urlencodedだが、本文の形式はJSONだと言っている。

Content-Typeapplication/x-www-form-urlencodedとしたい場合は、本文の形式はa=xxx&b=yyyである必要があります。あなたのコードの場合は、次のようになります。

body: 'name='+name 

あなたはJSONなどのデータを転送したい場合は、Content-Typeapplication/jsonに変更する必要があります。

関連する問題