form(action='/allusers', method="post")
input(id='name', placeholder='First Name / Last name')
button(type='submit') Launch Spacecraft
这是我的html(jade)从另一个页面重定向到allusers页面,该页面以用户名作为输入但我不能将'name'传递给allusers
router.post('/allusers', function(req, res, next) {
var name = req.query.name;
console.log(name);
res.render('allusers', { title: 'all users' });
});
更不用说,我已经厌倦了使用req.param.name
但它似乎只适用于req.body.name
所以我只想知道如何使用req.param
和\或req.query
,因为我无法从表单提交更改我的URL以从中提取信息
Edit1:我解决了定义表单的问题,它被假设为input(type='',name='', placeholder='')
并使用req.body.name
,但我仍然不知道如何使用URL
答案 0 :(得分:0)
编辑:我没有注意到您正在唱 id 属性而不是 name 这是定义表单字段名称的正确属性
Id仅关于识别DOM上下文中的任何(不仅是输入)DOM元素。字段名称应由 name 属性指定。这就是为什么(正如我想的那样,但你还没回答我),当你提交表格时,你没有在网址中看到“name = xxxx”。
Orignal(在这种情况下是错误的)答案):
在GET请求中,表单数据(实际的url参数)来自 req.query 属性(不是req.params,就像我在编辑之前所说的那样,抱歉)。
修复示例:
app.get('/user', function(req, res) {
res.send('user ' + req.query.name);
});
无论如何,请参阅Express Request.query文档。
实际上,根据http规范,即使在POST,PUT,DELETE或PATCH请求中也可以提供url参数。这就是为什么它们来自不同的地方:因为即使在提交表单时你总是可以拥有url参数,可以考虑POST,PUT,DELETE,PATCH(或将来指定的任何其他)请求。