这是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>
这是在服务器上运行的node.js函数:
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/');
我有两个问题:
myaction
使用http.createServer非常底层,对于按原样创建Web应用程序确实没有用。
http.createServer
Express是一个很好的框架,我会建议使用它。您可以使用安装它npm install express。
npm install express
拥有后,您可以创建一个基本的应用程序来处理表单:
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/'); });
您可以使用以下方法将表单指向该表单:
<form action="http://127.0.0.1:8080/myaction" method="post">
您无法在端口80上运行Node的原因是因为该端口上已经有一个进程正在运行(该进程正在为您提供服务index.html)。您可以使用Express index.html通过express.static中间件来提供静态内容,例如。
index.html
express.static