Quiero recopilar los datos de un formulario HTML simple y enviarlo al servidor. Lamentablemente, estoy cometiendo algunos errores y el servidor no recibe los datos. El error en la consola.
PUBLICAR http://localhost:3000/ net::ERR_CONNECTION_REFUSED
Aquí está mi código.
servidor.js
var express = require("express"); var app = express(); let PORT = process.env.PORT || 3000; // Middleware app.use(express.static("public")); app.use(express.json()); app.get("/", function(req, res) { res.sendFile(__dirname + "./public/index.html"); }); app.post("/", function(req, res) { console.log('kkk', req.body); }); var server = app.listen(PORT, function() { console.log("Express server listening on port " + PORT); }); Estoy usando XMLHttpRequest() para recopilar los datos y aquí está el código.
const contactForm = document.querySelector('#contactForm'); let fullName = document.getElementById('fullName'); let email = document.getElementById('emailAddress'); let phone = document.getElementById('phoneNumber'); let message = document.getElementById('message'); contactForm.addEventListener('submit', (e) => { e.preventDefault(); let formData = { name: fullName.value, email: email.value, phone: phone.value, message: message.value } let xhttp = new XMLHttpRequest(); xhttp.open('POST', '/'); xhttp.setRequestHeader('content-type', 'application/json'); xhttp.onload = function() { console.log(xhttp.responseText); if(xhttp.responseText == 'success') { console.log('Email sent successfully'); fullName.value = ''; emai.value = ''; phone.value = ''; message.value = ''; }else { console.log('Something went wrong'); } } xhttp.send(JSON.stringify(formData)); });Si quieres comprobarlo en directo.
https://contacto2021.herokuapp.com/
En el servidor, puedo ver la respuesta.
Al probar su sitio en vivo, veo que se cuelga cuando se publica en https://contact2021.herokuapp.com/ . Suponiendo que esta ruta está definida por lo siguiente:
app.post("/", function(req, res) { console.log('kkk', req.body); }); un problema es que necesitará iniciar algún tipo de respuesta, utilizando uno de los métodos de Response (por ejemplo, res.end() , res.send() ).
Es probable que este no sea el mismo problema que la conexión a localhost:3000 , pero si está tratando de acceder al sitio desde cualquier máquina que no sea la que lo aloja en desarrollo, entonces esa conexión no funcionará, ya que estaría tratando de conectarse a sí mismo en ese puerto.