Validation Node.js、Express和Jade-表单
我正在使用Node.js、Express和Jade,并试图找出如何发布、验证和处理表单数据 在我的jade文件中,我创建了一个联系人表单:Validation Node.js、Express和Jade-表单,validation,node.js,express,pug,Validation,Node.js,Express,Pug,我正在使用Node.js、Express和Jade,并试图找出如何发布、验证和处理表单数据 在我的jade文件中,我创建了一个联系人表单: div#contact-area form(method='post',action='') label(for='name') Name: input(type='text',name='name',id='name') label(for='email') Email:
div#contact-area
form(method='post',action='')
label(for='name') Name:
input(type='text',name='name',id='name')
label(for='email') Email:
input(type='text',name='email',id='email')
input(type='submit',name='submit',value='Submit').submit-button
然后,我将使用“快速验证器”模块验证表格,如下所示:
var express = require('express')
,routes = require('./routes')
,http = require('http')
,path = require('path')
,expressValidator = require('express-validator')
;
var app = express.createServer();
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade'); //not needed if we provide explicit file extension on template references e.g. res.render('index.jade');
app.use(express.bodyParser());
app.use(expressValidator);
app.use(express.methodOverride());
app.use(app.router);
});
//display the page for the first time
app.get('/mypage', function(req,res){
res.render('mypage', {
title: 'My Page'
});
});
//handle form submission
app.post('/mypage', function(req,res){
req.assert('name', 'Please enter a name').notEmpty();
req.assert('email', 'Please enter a valid email').len(6,64).isEmail();
var errors = req.validationErrors();
if( !errors){
sendEmail(function(){
res.render('mypage', {
title: 'My Page',
success: true
});
});
}
else {
res.render('mypage', {
title: 'My Page',
errors: errors
});
}
});
因此,有三种场景呈现我的页面,每种场景都可以访问不同的局部变量:
在jade文件中添加错误消息,然后运行代码。
只需使用以下代码更新您的jade代码:
div#contact-area
ul.errors
if errors
each error, i in errors
li.alert.alert-danger #{error.msg}
form(method='post',action='')
label(for='name') Name:
input(type='text',name='name',id='name')
label(for='email') Email:
input(type='text',name='email',id='email')
input(type='submit',name='submit',value='Submit').submit-button
嗨,谢谢你的回复。但是,您的代码
-var form_model={}| | locals.form_data
始终设置form_model={}
,因为{}
是一个对象(未定义),因此局部变量。form_数据将永远不会被评估?如果我将代码更改为-var form_model=locals.form_data | |{}
我仍然会得到一个错误,因为编译器说form_data
不存在。我不明白这一点,因为这应该适用于普通Javascript。关于第2点,我已经实现了您将数据传递回视图的想法,在我的例子中,我传递req.form
woops,您是对的,form_模型总是{}在我的代码中。我会更新的。我还注意到它实际上应该是本地人。