tutorial principiantes para page node libro how example desde cero attribute html5 node.js html-form-post node.js-client

html5 - principiantes - Node.js-Cómo enviar datos de html para expresar



node js web page example (2)

Me gustaría ampliar Obertklep''s (la persona que tengo delante):

En su ejemplo, es un módulo de NPM llamado body-parser que está haciendo la mayor parte del trabajo, donde pone req.body.name , creo que está usando body-parser para obtener el contenido de los atributos de nombre ( no estoy seguro de cuál es específicamente, ya que su formulario tiene múltiples) que se recibe cuando se envía el formulario.

Si no desea usar Express, puede lograr esto usando querystring que es un módulo de Nodo integrado; consulte las respuestas en el siguiente enlace para ver un ejemplo de cómo usar querystring.

Puede ser útil mirar esta respuesta que es muy similar a tu búsqueda.

esto es un ejemplo en html:

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>CSS3 Contact Form</title> </head> <body> <div id="contact"> <h1>Send an email</h1> <form action="/myaction" method="post"> <fieldset> <label for="name">Name:</label> <input type="text" id="name" name="name" placeholder="Enter your full name" /> <label for="email">Email:</label> <input type="email" id="email" placeholder="Enter your email address" /> <label for="message">Message:</label> <textarea id="message" placeholder="What''s on your mind?"></textarea> <input type="submit" value="Send message" /> </fieldset> </form> </div> </body> </html>

y esta es la función node.js que se ejecuta en el servidor:

var sys = require(''sys''), http = require(''http''); http.createServer(function (req, res) { switch (req.url) case ''/myaction'': res.end(?????); break; } }).listen(8080); sys.puts(''Server running at http://127.0.0.1:8080/'');

Tengo 2 preguntas:

  1. ¿Cómo puedo llamar a la función myaction en el node.js desde la página html? Porque el archivo html se ejecuta en el puerto 80 y node.js en 8080 (cuando intento mover node.js al puerto 80 escribe "// Unhandled ''error'' event")
  2. En la función node.js donde pongo "?????" ¿Cómo puedo obtener datos del formulario html? Cuando escribo req.html.body.name no obtengo los datos ...

Usar http.createServer es de muy bajo nivel y realmente no es útil para crear aplicaciones web tal cual.

Un buen marco para usar encima es Express, y sugeriría seriamente usarlo. Puede instalarlo usando npm install express .

Cuando lo haya hecho, puede crear una aplicación básica para manejar su formulario:

var express = require(''express''); var bodyParser = require(''body-parser''); var app = express(); //Note that in version 4 of express, express.bodyParser() was //deprecated in favor of a separate ''body-parser'' module. app.use(bodyParser.urlencoded({ extended: true })); //app.use(express.bodyParser()); app.post(''/myaction'', function(req, res) { res.send(''You sent the name "'' + req.body.name + ''".''); }); app.listen(8080, function() { console.log(''Server running at http://127.0.0.1:8080/''); });

Puedes hacer que tu formulario apunte a él usando:

<form action="http://127.0.0.1:8080/myaction" method="post">

La razón por la que no puede ejecutar Node en el puerto 80 es porque ya hay un proceso ejecutándose en ese puerto (que sirve su index.html ). Puede usar Express para servir también contenido estático, como index.html , utilizando el middleware express.static .