Экспресс JS POST Запрос - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь выполнить базовый запрос POST, который сохраняет адрес электронной почты в переменной, а затем отображает его в консоли.URL-адрес страницы: http://localhost:3000/email-adress (я знаю, что отсутствует дополнительный адрес по адресу).

Почему-то код не работает, мысли?

Экспресс

const express = require('express')
const router = express.Router()

router.post('/email-adress', (req, res) => {
  var email = req.body.email
  console.log(email)
})

module.exports = router

HTML

<form action="/finished" method="post">
<label class="" for="email">Email address</label>
<input class="" id="email" name="email" type="text">
<button type="submit" class="">Continue</button>  
</form>

Ответы [ 2 ]

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

Я разработал ответ благодаря Джакси. Что я делал, так это делал POST на / email-адресе, а не на / finish, поэтому я изменил код Express на:

const express = require('express')
const router = express.Router()

router.post('/finished', (req, res) => {
  var email = req.body.email
  console.log(email)
  res.render('finished')
})

module.exports = router

Это решило проблему!

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

Здесь есть несколько вещей.Во-первых, когда кто-то переходит на URL-адрес, в вашем примере localhost:3000/email-adress (который, кстати, работает только на вашей машине), браузер отправляет запрос GET на маршрут /email-adress.Я не уверен, какова остальная часть вашего экспресс-кода, но вам нужно будет найти способ справиться с этим, чтобы предположительно обслуживать вашу форму.Теперь, когда форма отправляется на внешний интерфейс, если вы хотите вызвать код на маршруте POST до /email-adress, вам придется сделать это через fetch.

Я предполагаюВы хотите, чтобы это произошло после отправки формы.Для этого обработайте отправку формы через JavaScript.Избавьтесь от атрибутов action и method и сделайте что-то вроде этого:

document.querySelector('form').addEventListener('submit', onSubmit)

function onSubmit(e) {
  fetch('/email-adress', {
    method: 'POST',
    body: JSON.stringify({ email: e.target.email.value })
  })
}

Теперь, когда вы отправите форму, вы увидите, что на вашем сервере произойдет console.log.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...