Как собрать данные из формы с именованными входами, используя Express (уже используя bodyParser / express.json) - PullRequest
0 голосов
/ 25 июня 2019

Форма отправки достигает моего маршрутизатора, но без данных.

Решено: заменить express.json() промежуточное ПО на express.urlencoded(). Смотрите мой ответ на вопрос «почему».

(Метафора: форма представляет собой автобус, и нажатие кнопки отправки собирает пассажиров на автобусной остановке, а затем отправляется на сервер. Этот автобус закрывает дверь на лице этого потенциального пассажира. Пассажир бежит за ним, прося автобус останавливается, но автобус продолжается и приходит на сервер пустым. Мне нужна помощь, чтобы заменить этого некомпетентного водителя автобуса. )

Я использую Express v4.17.00 и body-parser v1.19.00 (я знаю, что это необязательно).

Попытки исправить HTML:

  • [x] Входы названы
  • [x] Значения существуют
  • [x] Переключение с `type =" hidden "на type =" text "и обратно
  • [x] Переключение между кнопкой [type = "submit"] и вводом [type = "submit"]
  • [x] Удаление data-fhqwhgads13 (значение Vue) из ввода
  • [x] Передача более базового значения в значение
  • [x] Использовать пример формы Mozilla вместо моей собственной формы (почему я подозреваю, что я запутался в Express)

Попытки срочного исправления:

  • [x] Переключение между bodyParser.json () и express.json ()
  • [x] Использовать bodyParser.text (), .raw ()
  • [x] Напечатайте весь запрос, чтобы увидеть, находится ли тело где-то еще.

С вышеуказанными исправлениями console.log(req.body) всегда показывает {}. Я использую пример MDN в своем MRE, поэтому я думаю, что что-то упустил в Express.

Вот мой репозиторий MRE

Я ожидаю, что данные войдут в мой пост-маршрут / расписание магазина, будут иметь данные как часть объекта req, и я смогу использовать его.

Однако console.log(req.body) дает мне {} независимо от того, какая форма ввода используется. Нет сообщений об ошибках.

1 Ответ

0 голосов
/ 25 июня 2019

Я предполагаю, что формы работают путем кодирования данных в тело пакета, отправляемого с пост-запросом. Я думаю, это то, к чему относится URL encoded. Это отличается от запроса JSON. У меня мало опыта в передаче и запросе JSON. Я просто знаю, что это отличается от запроса / ответа JSON.

Итак, переключение express.json() на express.urlencoded() дало мне мои данные на маршруте /store-schedule сервера.

// app.use(express.json()); Doesn't work.
app.use(express.urlencoded()); // Works
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...