Javascript 如何向用户返回他们输入的电子邮件已注册并重定向到注册页面的消息?
(已解决) 我正在写注册页。我现在面临一个问题。我有两个HTML页面Javascript 如何向用户返回他们输入的电子邮件已注册并重定向到注册页面的消息?,javascript,node.js,json,express,backend,Javascript,Node.js,Json,Express,Backend,(已解决) 我正在写注册页。我现在面临一个问题。我有两个HTML页面index.HTML和register.HTML。当用户在register.html中提交信息时,我希望我的代码首先检查他们输入的电子邮件是否已经存在于数据库中。我的注册功能如下: app.post('/user_register', (req, res) => { const name = req.body.input_name; const email = req.body.input_e
index.HTML
和register.HTML
。当用户在register.html
中提交信息时,我希望我的代码首先检查他们输入的电子邮件是否已经存在于数据库中。我的注册功能如下:
app.post('/user_register', (req, res) => {
const name = req.body.input_name;
const email = req.body.input_email;
const phoneNumber = req.body.input_phonenumber;
const password = req.body.input_password;
const confirmpassword = req.body.input_confirmpassword;
const postQuery = 'INSERT INTO registerinfo VALUE (?,?,?,?)';
const checkQuery = 'SELECT email FROM registerinfo WHERE email = ?';
mysqlConnect.connection.query(checkQuery, [email], async (err, result, fields) => {
if (err) console.log(err);
if (result.length > 0) {
return app.get('/result', (req, res)=>{
res.json(result);
res.redirect('/register')
})
} else {
let hashedPassword = await bcryptjs.hash(password, 8);
mysqlConnect.connection.query(postQuery, [name, email, phoneNumber, hashedPassword], (err, result, fields) => {
if (!err) {
console.log('Register SUCCESSFUL!!')
} else {
console.log(`the error is ${err}`)
res.send(500);
throw err;
}
})
}
})// query end here
问题从if(result.length>0){}
开始,我的想法是如果result.lenght>0
因为数据库中已经存在电子邮件,那么使用return app.get()
将json数据发送到route/result
并重定向回register.html
,register.html
将始终从路由/result
获取数据,如果数据不为空,则向用户发送一条消息,告知此电子邮件已注册
首先,重定向回register.html
不起作用,我尝试了res.redirect('/register')
和res.sendFile(uu dirname+'./public/register.html')
内的return
,但一旦我单击submit,它将始终返回到index.html
第二,我的思想是实现我想要的东西的正确途径吗?当我看到它时,这个
返回app.get()
内部app.post()
看起来不是正确的方法。我确实在网上找到了一个使用Handlebar的解决方案,它通过return res.render('register',{message:'email is registed'})
简单地解决了这个问题,因为我没有使用hbs,所以我尝试在没有它的情况下解决这个问题。因此,如果一开始我解决这个问题的想法是错误的,那么正确的方法是什么呢?app.get
和app.post
用于注册路由的处理程序。它们不会将您重定向到任何地方,尝试使用它们也不会起作用。您必须使用res.redirect
。如果您面临重定向问题,请编辑您的问题并显示您尝试使用重定向的代码。我刚刚编辑了它,它位于app.get()
中。您能否澄清一下,您为什么试图将json数据发送到/result
?这将实现什么?另外,我怀疑您在前端使用的是默认表单提交,对吗?是的,我使用的是Bootstrap5默认表单。我的目的是在电子邮件已注册的情况下向用户发送消息。因此,register.html
将获取json数据,如果数据不是空的,则向用户发送一条消息。这就是为什么我需要它重定向到register.html
。我甚至不确定这是正确的处理方式我只是解决了这个问题,发现了问题。谢谢