Javascript 表单提交时如何获取html组件值?

Javascript 表单提交时如何获取html组件值?,javascript,node.js,express,Javascript,Node.js,Express,我的ExpressJS应用程序中有两个页面。家庭和用户。我在my home.js文件中创建了一个表单,并从此表单中创建了一个导航user.js。我可以获取输入组件的值,但无法获取其他组件的值。我该怎么做 home.js: <form action="/users" method="POST"> <input id="input_name" type="text" placeholder="name" name="name"> <input id="i

我的ExpressJS应用程序中有两个页面。家庭和用户。我在my home.js文件中创建了一个表单,并从此表单中创建了一个导航user.js。我可以获取输入组件的值,但无法获取其他组件的值。我该怎么做

home.js:

<form action="/users" method="POST">
    <input id="input_name" type="text" placeholder="name" name="name">
    <input id="input_pwd" type="text" placeholder="password" name="pwd">
    <input id="input_mail" type="text" placeholder="mail" name="mail">

    <button type="submit" name="button_name" value='register1'>register</button>

    ....

    <div id="selection" name="selection">selection</div>
</form>
我可以得到req.body.name、req.body.mail和req.body.pwd的值。但是req.body.selection始终是未定义的。我怎样才能得到这个值

我该怎么做


你不能。提交表单不会将“填写的文档”发送回服务器,它只会发送回表单数据,这意味着输入名称与其值成对。和
不是输入。

html表单只关心其具有命名属性的表单元素(input、textarea和select等)
div
不是html表单元素。那么您将如何通过表单发送
div
centent? 处理这个问题只有诀窍

1-使用
隐藏的
表单元素
: 将表单中的一个表单元素置于隐藏模式,该模式将包含
div
元素的数据。一旦
div
内容发生更改,就通过JS更新隐藏表单元素的内容。不要忘记命名这个隐藏的表单元素

2-通过JS提交表格: 不要通过原始的方式提交表单。(通过表单中的action属性)。使用JS提交表单。 在提交之前,解析您的
div
内容并将其放入要提交的数据中


我只知道这两个窍门。如果其他人知道更多,请分享。

是。我在app.js中添加了body解析器。const bodyParser=require('body-parser');使用(bodyParser.urlencoded({extended:true}))嗯,再次查看您的表单,实际上很明显您的表单不发送
div
值,因为。。。它不被认为是表单数据。总之,您希望console.log(req.body.selection)part有什么输出?编辑:实际上,您可能应该用复选框或其他东西填充该div是的,用户选择一些选项,我填充选择div。但我无法访问它们。我找不到我错过的东西。如何将非输入组件发送到服务器端?我能想到的一个解决方案是在
表单
标记中使用
onSubmit
属性,并创建自定义表单提交功能。在此函数中,您可以尝试自定义发送的内容。或者,为您的
按钮
创建一个
onClick
处理程序来处理表单提交,并使用AJAX发送您的数据。如果有机会,您是否可以使用您提到的选项与我们共享填充的
div
?谢谢您的回答。那个么我怎样才能将这些数据发送到服务器呢?我想将带有选择数据的请求消息发送到服务器,如果可以,我想打开用户页面。我可以使用ajax将选择数据发送到服务器,而无需使用表单。但这次我无法打开用户页面?使用
?我使用用户名、密码和邮件输入。但用户可以选择一些选项进行选择。因为它是div。谢谢你的回答。如果我不在表单中使用动作属性,我不知道如何打开用户页面。您能给我举个例子吗?很简单,如果您使用的是ajax,一旦从服务器收到肯定的响应,就通过JSI将页面重定向到用户页面。我从表单中删除了action属性,并尝试了res.redirect(“/users”);在index.js中。但什么也没发生。当您打算从前端通过JS提交表单时,这个res.redirect()将无法满足您的需要。就在前端,当您提交表单后收到成功消息时,通过JS从前端将页面重定向到/users,而不是从后端,您现在正在使用res.redirect()执行此操作。好的,创建两个路由,一个用于处理表单,另一个用于在/users页面上显示任何内容。发出ajax请求以形成处理路由,成功后返回true。在前端,使用ajax代码处理成功事件。在ajax中遇到此成功事件时,将页面重定向到/users页面。这是解决您的问题的变通方法之一
router.post('/users', function (req, res, next) {
    console.log("register name : " + req.body.name);
    console.log("register mail : " + req.body.mail);
    console.log("register pwd : " + req.body.pwd);
    console.log("register selection : " + req.body.selection);
}