使用bootstrap,express和node.jslogin表单

我对node.js非常陌生,并且expression出来,所以我仍然试图找出基本的function。 我有一个简单的歌唱forms。 我想,一旦我点击loginbutton另一个HTML页面加载和node.js函数被调用。 如何做到这一点最好的方法?

这是我的表单代码。

<form action="/create_dialog" method="post" class="form-signin"> <h2 class="form-signin-heading">Please sign in</h2> <label for="username" class="sr-only">Username</label> <input type="username" id="username" class="form-control" placeholder="Username" required autofocus> <label for="inputPassword" class="sr-only">Password</label> <input type="password" id="inputPassword" class="form-control" placeholder="Password" required> <div class="checkbox"> <label> <input type="checkbox" value="remember-me"> Remember me </label> </div> <input class="btn btn-lg btn-primary btn-block" type="submit">Sign in</input> </form> 

有了这个代码,我成功导航到chat.html页面,一旦我点击“login”button。 但是我想要做的也是调用node.js函数在服务器上创build一个文件,然后发送input到chat.html页面的用户名variables来显示名称。 这是我有的app.js代码。

 var express = require('express'); var path = require('path'); var http = require('http'); var bodyParser = require('body-parser'); var app = express(); // all environments app.set('port', process.env.PORT || 8080); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.json()); app.use(express.urlencoded()); app.use(express.methodOverride()); app.use(app.router); app.use(bodyParser.json()); // for parsing application/json app.use(bodyParser.urlencoded({ extended: true })); app.use(require('stylus').middleware(path.join(__dirname, 'css'))); app.use(express.static(path.join(__dirname, 'public'))); app.post('/create_dialog', function(req, res) { //res.send('You sent the name "' + req.body.username + '".'); console.log('You sent the name "' + req.body.username + '".'); console.log(req.body); res.redirect('chat.html'); }); // development only if ('development' == app.get('env')) { app.use(express.errorHandler()); } http.createServer(app).listen(app.get('port'), function(){ console.log('Express server listening on port ' + app.get('port')); }); 

我读过使用这个body-parser模块可以帮助我处理表单数据的地方,但是我对如何将它用于node.js函数然后发送到chat.html页面感到失望。

编辑1:更新了app.js代码来添加路由function。 由于req.body为空,所以仍然无法访问variables。

编辑2:也更新了表单代码。

您可以使用types为submit的input,而不是使用链接:

 <form action="/create_dialog" method="post" class="form-signin"> <h2 class="form-signin-heading">Please sign in</h2> <label for="username" class="sr-only">Username</label> <input type="text" id="username" name="username" class="form-control" placeholder="Username" required autofocus> <label for="inputPassword" class="sr-only">Password</label> <input type="password" name="password" id="inputPassword" class="form-control" placeholder="Password" required> <div class="checkbox"> <label> <input name="remember-me" type="checkbox"> Remember me </label> </div> <input class="btn btn-lg btn-primary btn-block" type="submit"> </form> 

然后为了获得POST 请求正文的内容,你需要一个像这样的路由:

app.js

 app.post('/create_dialog', function(req, res){ var username = req.body.username var password = req.body.password var remember = req.body.remember-me // 'on' (checked) or undefined (off) // With a veiw-engine - render the 'chat' view, with the username res.render('chat', {username: username}) }) 

views / chat.hbs( 假设你使用句柄)

 <html> <head> ... </head> <body> <p>Your username is: {{username}}</p> </body> </html> 

要使用res.render,你需要使用一个视图引擎,比如玉,把手或者hogan。 如果你不确定如何设置这样的东西,你应该使用express-generator(命令行: express --hbs chat-app )来查看样板应用express --hbs chat-app