1. get方法
//subform.ejs
<% include nav %>
<form>
用户名:<input type="text" id="userName" name="userName" />
密码:<input type="password" id="yserPwd" name="userPwd" />
<input type="submit" value="提交">
</form>
//subform.js
var express = require('express');
var router = express.Router();
router.get('/', function(req, res) {
var
userName = req.query.userName,
userPwd = req.query.userPwd,
userName2 = req.param('userName'),
userPwd2 = req.param('userPwd');//注意req.query,req.param
console.log('req.query用户名:'+userName);
console.log('req.query密码:'+userPwd);
console.log('req.param用户名:'+userName2);
console.log('req.param密码:'+userPwd2);
res.render('subform', { title: '提交表单及接收参数示例' });
});
module.exports = router;
运行结果:
req.query用户名:'+zhangsan
req.query密码:'+123
req.param用户名:'+zhangsan
req.param密码:'+123
2. post方法
//subform.ejs
<% include nav %>
<form mathod='post'>
用户名:<input type="text" id="userName" name="userName" />
密码:<input type="password" id="yserPwd" name="userPwd" />
<input type="submit" value="提交">
</form>
//subform.js
var express = require('express');
var router = express.Router();
router.post('/', function(req, res) {
var
userName = req.body.userName,
userPwd = req.body.userPwd,
userName2 = req.param('userName'),
userPwd2 = req.param('userPwd');//注意req.body;req.param
console.log('req.body用户名:'+userName);
console.log('req.body密码:'+userPwd);
console.log('req.param用户名:'+userName2);
console.log('req.param密码:'+userPwd2);
res.render('subform', { title: '提交表单及接收参数示例' });
});
module.exports = router;
运行结果:
req.body用户名:'+zhangsan
req.body密码:'+123
req.param用户名:'+zhangsan
req.param密码:'+123
说明:
req.query:我们用来接收GET方式提交的参数。
req.body:我们用来接收POST提交的参数。
req.param:两种都能接收到。
重点:
req.body。Express处理post请求是通过中间件bodyParser,在app.js中可以看到:
...
var bodyParser = require('body-parser');
...
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
...
没有这个中间件Express就不知道怎么处理这个请求,通过bodyParser中间件分析application/x-www-form-urlencoded和application/json请求,并把变量存入req.body,这样我们才能获取到相应值。