node -vv10.15.0
我在通过AJAX加载的页面上有多个标准表单(因此我不知道从哪里来多少个)。每个都有一个表单名称。
我想获取表单属性,但不会在req.body变量中返回它们。
在下面的示例中,我想以form1的形式访问表单名称。我查看了req对象,但是找不到对已提交表单的描述。
如何获得表单属性,例如名称,方法和动作?我需要对内置的解析器做些什么吗?
示例是:
<form method='post' name='form1'>
<input type='submit'>
</form>
在节点表示端,我有以下内容:
app.post('/', function(req, res, next)
{
console.log(req.body);
process.exit(1);
});
控制台显示{}
我不认为这是重复的问题。花了一个小时左右的时间来寻找这个答案。
否,只有设计为包含表单数据的表单元素会随表单发布自动发送。不发送父级form
元素的属性,例如name
和action
。
表单中经常使用的一种技巧,它是在表单中插入一个隐藏元素(用户看不到的元素),然后将数据放入要发送到服务器的该元素中。然后,服务器可以像其他任何命名的表单元素一样访问数据。您可以在最初设计表单时填充这些元素,也可以在提交表单之前的任何时候使用Javascript动态填充它们。
例如:
<form method='post' name='form1'>
<input type="hidden" name="action" value="post">
<input type="hidden" name="formName" value="form1">
Enter your data here: <input name="data">
<input type='submit'>
</form>
假设您已经适当配置了body-parser中间件,那么在提交此表单时,您将可以访问req.body.action
,req.body.formName
和req.body.data
。