Node.js NodeJS:访问表单数据
我无法从表单访问数据。就我所知,以下内容应该允许我从HTML表单中读取用户名和密码,但是,它没有按预期工作 感谢您的帮助 车把形状Node.js NodeJS:访问表单数据,node.js,express,form-data,Node.js,Express,Form Data,我无法从表单访问数据。就我所知,以下内容应该允许我从HTML表单中读取用户名和密码,但是,它没有按预期工作 感谢您的帮助 车把形状 …您需要使用req.body而不是req.query来访问来自表单正文的电子邮件和密码,因为内容类型是表单数据 此外,将电子邮件和密码作为查询参数发送是不好的做法,即使在受信任的源中使用。这是因为记录所有请求是一种常规做法,因此在查询中记录可以记录的基本细节并不是一种好方法。感谢@Jatin Mehrotra他的解决方案解决了我的问题这里有一句话:“你没有使用主体
…您需要使用
req.body
而不是req.query来访问来自表单正文的电子邮件和密码,因为内容类型是表单数据
此外,将电子邮件和密码作为查询参数发送是不好的做法,即使在受信任的源中使用。这是因为记录所有请求是一种常规做法,因此在查询中记录可以记录的基本细节并不是一种好方法。感谢@Jatin Mehrotra他的解决方案解决了我的问题这里有一句话:“你没有使用主体解析器,这就是为什么你没有定义。使用这个应用程序。使用(express.urlcoded({extended:false})在你的app.js–Jatin Mehrotra“中,你应该使用
req.body
而不是req.query
。最后一个主要用于'GET'请求,你正在执行POST
one。当我使用“req.body.username”时,我GET“无法获取未定义的属性'username'”“Query params”可以完美地与“post”请求一起使用。它们甚至经常一起使用。谢谢@Jerome。更新了答案。@L.Blommers您可以尝试将您的内容类型更新为“multipart/form data”并重试吗?您没有使用主体解析器,这就是您未定义的原因。使用此app.use(express.urlcoded({extended:false}))
在你的app.js中
<form method="POST" action="/login" enctype="application/x-www-form-urlencoded">
<table>
<tr>
<td><input name="username" type="text" placeholder="User name"
required autocomplete="username"/></td>
</tr>
<tr>
<td><input name="password" type="password" placeholder="Password"
required autocomplete="current-password"/></td>
</tr>
<tr>
<td><input type="submit" value="Ok"/></td>
</tr>
</table>
</form>
app.post("/login", (req, res) => {
//Prepare login request
const email = req.query.username
const pass = req.query.password
//Send login request
request.post("http://localhost:3000/users/login?email=" + email + "&password=" +
pass, function (error, restResponse, body){
//Handle response
if(error){
return res.status(400).send(error)
}
const user = body.user
const token = body.token
console.log("User: " + user + " Token: " + token)
return res.render("admin/index")
})
})