@whireless

Почему FormData уходит как undefined?

Всем привет! Не пойму, почему с сервера приходит undefined?

Вот отправляю форму:
const payForm = document.querySelector('.pay__form');

payForm.addEventListener('submit', (evt) => {
  evt.preventDefault();

  sendData();
});

const sendData = async () => {
  try {
    const response = await fetch(
      'https://example.com:8443/server',
      {
        method: 'PUT',
        body: new FormData(payForm),
      }
    );
    const data = await response.text();
    console.log(data);
  } catch (error) {
    console.log(error);
  } 
};


Вот обрабатываю и отвечаю:
let mail = '';

app.use(bodyParser.urlencoded({ extended: false }));
app.put('/server',(req, res) => {
  req.on('data', chunk => {
    mail += req.body.email; // Тут должна быть строка из <input name="email">
  })
  req.on('end', () => {
    res.writeHead(200, {'Content-Type': 'text/plain; charset=utf-8'})
    res.end(mail); // Тут сервер отвечает строкой из input
  })
})


По идее в консоль должна падать строка, введённая человеком, а в итоге падает undefined
  • Вопрос задан
  • 137 просмотров
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Если в вашей форме нет файлов, то проще посылать application/x-www-form-urlencoded

const response = await fetch(
  'https://example.com:8443/server',
  {
    method: 'PUT',
    body: new URLSearchParams(new FormData(payForm)),
  }
);


И req.on('data', ...) не нужен.

app.use(bodyParser.urlencoded({ extended: false }));
app.put('/server',(req, res) => {
  const mail = req.body.email;
  res.writeHead(200, {'Content-Type': 'text/plain; charset=utf-8'})
  res.end(mail);
})


Если же очень хочется multipart/form-data, то на сервере нужен multer, т.к. встроенный в Express body-parser не умеет обрабатывать такие запросы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
Content-Type укажите при отправке multipart/form-data
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы