al enviar un formulario sin usar ajax , pude ver "mensaje enviado con éxito" en mi http://localhost/ss (funcionando bien como debería)
Pero al enviar un formulario usando ajax $.post() , la respuesta no se recibe en el método $.post(). no pude encontrar ningun motivo..
Tenga en cuenta: el mismo código funciona bien con php
índice.html
<!DOCTYPE html> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script> <script> $(document).ready(function() { $("#buttons").click(function() { $.post("http://localhost:3000/ss", { sendemail: $("#email").val(), sendname: $("#UserName").val(), sendpass: $("#Password").val() }, function(res) { alert(res); }); }); }); </script> <body> <div class="forms"> <form> <div class="formdiv"> <label>User Email</label> <input type="email" id="email" name="email" /> </div> <div class="formdiv"> <label>User Name</label> <input type="text" name="UserName" id="UserName" /> </div> <div class="formdiv"> <label>User Password</label> <input type="password" name="Password" id="Password" /> </div> </form> <div style="background:green;padding:15px;" id="buttons">send</div> </div> </body> </html>analizar.js
var express = require("express"); var bodyParser = require("body-parser"); var app = express(); app.listen(3000, function(req, res) { console.log("express is listening to port 3000"); }); app.use(bodyParser.urlencoded({ extended: true })) app.use(bodyParser.json()); app.get("/", function(req, res) { res.send("hai"); }); app.post("/ss", function(req, res) { var ss = req.body.sendemail; if (ss != undefined) { console.log(ss); res.send("message sent successfully"); } else { res.send("error occurred"); } });la consola imprime la dirección de correo electrónico del usuario " El único problema es la respuesta a html "
El código se ve bien por sí mismo, aunque hay un problema con (sospecho) la forma en que lo usa. No está permitiendo cross-origin sharing . En otras palabras, si intenta ejecutar este código en otro dominio, recibirá un error CORS , ya que el servidor se niega a responder al cliente.
Por lo tanto, sospecho que está cargando el archivo .html:
ambos devolverían (y están) devolviendo el error mencionado anteriormente. Es por eso que no está recibiendo la respuesta, por lo que no está viendo el mensaje de alerta.
Para evitar el problema, puede:
Ejemplo aquí:
var express = require("express"); var bodyParser = require("body-parser"); var app = express(); var path = require("path"); ... app.get("/", function(req, res) { res.sendFile(path.join(__dirname + '/index.html')); }); app.post("/signup", function(req, res) { var email = req.body.email; if (!email) { return res.json({ message: "error occurred" }); } res.json({ success: true; }); });