get方法
app.get('/login',function (req,res) {
console.log(req.query.account);
console.log(req.query.password);
......
//存入数据库
......
//从定向页面
res.send();
});
- 需注意的是该方法会重新定向页面,可返回一HTML页面提示用户成功或失败,不过该方法会在用户刷新页面时发出警告,且影响到回退按钮与历史记录,因此不推荐使用。
- 我们知道的是get方法传送数据是是将数据保存在请求头中,直接跟在URL之后,因此长度有限制,一般不能超过1024B,所以一般不使用该方法发送表单数据。
post方法
- 我们知道的是post方法将数据存储在请求体(body)中,我们无法直接读取该数据,因此我们需引入一个中间件 body-parser,
npm install --save body-paser
并于使用post方法之前引入
app.use(require('body-parser')());
app.post('/login', function (req, res) {
console.log(req.body.account);
console.log(req.body.password);
......
//存入数据库
......
//从定向页面
res.send();
})
- 需注意的是该方法也会重新定向页面,可返回一HTML页面提示用户成功或失败,不过该方法会在用户刷新页面时发出警告,且影响到回退按钮与历史记录,因此不推荐使用。
使用Ajax方法异步发送表单数据(常用)
- 该方法与上面提到的两种在接收数据上完全一样,在服务端只是添加一判断保证数据是以Ajax方法发送过来的
app.use(require('body-parser')());
app.post('/login', function (req, res) {
if (req.xhr || req.accepts('json,html') == 'json') {
console.log(req.body.account);
console.log(req.body.password);
res.send({type: 'login', status: 'scuess'});
}
else {
res.send({type: 'login', status: 'error'});
}
});
- 该方法由于其异步的性质不会重载前端页面,比较常用。
HTML表单文件上传
- 上传时需设置表单属性
enctype="multipart/form-data"
<form action="http://127.0.0.1:3000" class="col-md-4 col-md-offset-4" enctype="multipart/form-data" method="post">
<div class="form-group">
<label for="file" class="control-label">上传文件</label>
<input type="file" name="file" id="file">
</div>
<div class="form-group">
<input type="submit" name="submit" class="btn btn-default btn-block">
</div>
</form>
var formidable = require('formidable');
app.post('/', function (req, res) {
var formdata = new formidable.IncomingForm();
formdata.parse(req, function (err, filed, files) {
console.log(files);
});
});