Estoy tratando de enviar datos de formulario html al servidor a través de una solicitud de búsqueda 'POST', pero en el lado del servidor obtengo un cuerpo de solicitud vacío. Ya probé diferentes soluciones proporcionadas en el desbordamiento de pila, pero ninguna de ellas funciona en mi extremo. ¿Alguien podría ayudarme a identificar dónde me estoy equivocando?
Tengo el formulario con id 'formulario de registro' en mi archivo html
JavaScript del lado del cliente, el código es el siguiente:
const myForm = document.getElementById('signup-form') myForm.addEventListener('submit', (e) => { e.preventDefault() const myForm = document.getElementById('signup-form') const data = new FormData(myForm) const option= { method: 'POST', headers: { 'Content-type': 'application/json' }, body:JSON.stringify(data) } fetch('/login', option).then( response => response.json() ).then( data => console.log(data) ).catch( error => console.log(error) ) }) app.use(express.urlencoded({ extended: false})) app.use(express.json()) app.post('/login', (req, res) => { console.log('url is', req.url) const info = req.body; console.log('info is:', info) res.status(201).json({ 'submitted': true }) }) app.listen(3000, () => { console.log('listening on port 3000') })Con FormData no puede POST application/json, porque no está en la lista de tipos de contenido admitidos por un elemento de form .
En su lugar, escribe algo como
const data = {element1: "value", element2: "value2", ...};