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 (..., router) 전에 app.use가 실행됩니다 – bresson
코드가 올바르게 표시됩니다. 요청 본문을 브라우저에서 확인하고 올바른지 확인하십시오 (Chrome DevTool의 '네트워크'탭 사용). 그런 다음 라우터 (미들웨어)의 시작 부분에 app.use를 추가하고 'req.body'를 확인하여 올바른지 확인하십시오 –