nodejs 获取表单数据
Express表单处理
如果使用GET进行表单处理,表单域在 req.query 对象中。
如果有一个名称属性为email 的 HTML 输入字段,它的值会以 req.query.email 的形式传递到处理程序。
如果使用 POST (推荐使用的),需要引入中间件来解析 URL 编码体。首先,安装 body-parser中间件( npm install --save body-parser ),然后引入:
app.use(require('body-parser')());
一旦引入了 body-parser ,你会发现 req.body 变为可用,这样所有的表单字段将可用。注意一点, req.body 并不阻止你使用查询字符串。
为了演示,我们将使用查询字符串、一个隐藏字段以及可视字段,详见 /views/newsletter.handlebars:
<h2>Sign up for our newsletter to receive news and specials!</h2>
<form class="form-horizontal" role="form"
action="/process?form=newsletter" method="POST">
<input type="hidden" name="_csrf" value="">
<div class="form-group">
<label for="fieldName" class="col-sm-2 control-label">Name</label>
<div class="col-sm-4">
<input type="text" class="form-control" id="fieldName" name="name">
</div>
</div>
<div class="form-group">
<label for="fieldEmail" class="col-sm-2 control-label">Email</label>
<div class="col-sm-4">
<input type="email" class="form-control" id="fieldName" name="email">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-4">
<button type="submit" class="btn btn-default">Register</button>
</div>
</div>
</form>
以上使用了Bootstrap,如果感到费解可以参考[Twitter Bootstrap 文档](http://getbootstrap.com)。
接下来看看示例1:
app.use(require('body-parser')());
app.get('/newsletter', function(req, res){
res.render('newsletter', { csrf: 'CSRF token goes here' });
});
app.post('/process', function(req, res){
console.log('Form (from querystring): ' + req.query.form);
console.log('CSRF token (from hidden form field): ' + req.body._csrf);
console.log('Name (from visible form field): ' + req.body.name);
console.log('Email (from visible form field): ' + req.body.email);
res.redirect(303, '/thank-you');
})