NodeJSのルートでAJAXにfetch()を使用するフォームがあります。 AJAX POSTがルートにヒットすると、req.bodyは空のオブジェクト{}を表示します。Express JSルートでformDataでPOSTを取得すると、空白になる
は、ここでは、コードです:app.js
app.use(bodyParser.json())で
//;
app.use(bodyParser.urlencoded({extended:true}))); form.jsで
//
form.getElementById('form__option').addEventListener('submit', e => {
e.preventDefault()
const form = $('form')[0]
fetch('/polls/create', {
method: 'POST',
body: new FormData(form)
})
})
// appRoute.jsで
exports.createPost = (req, res, next) => {
console.log('req body', req.body)
res.send('NOT IMPLEMENTED: pollsController createPost');
}
あなたのルート定義の前にapp.use(...)を入れましたか? – cshion
はい、両方のapp.useがapp.use(...、router)の前に実行されます – bresson
コードが正しく表示されます。ブラウザからリクエストの本文を確認して、正しいことを確認する必要があります(Chrome DevToolの[ネットワーク]タブを使用できます)。次に、ルータ(ミドルウェア)の最初の部分をapp.useに追加し、 'req.body'を確認してください –