Node.js注册页面表单校验触发后错误信息无法正常显示问题
问题原因
- 后端渲染注册页时未将错误数组传递给视图模板,模板侧无法获取到errors变量,判断逻辑不会触发
- EJS模板中使用了无输出的语法标签,就算拿到错误数据也不会渲染到页面上
修正代码
后端路由代码修改
module.exports.signup_post = (req,res)=>{ let {firstName,lastName,username,email,password,password2} = req.body; console.log( firstName, lastName , username, email, password, password2 ); let errors =[]; if (!firstName || !lastName || !username || !email || !password || !password2){ errors.push({message:'请填写所有字段'}); } if (password.length<6){ errors.push({message:'密码长度至少为6位'}) } if (password!= password2){ errors.push({message:'两次输入的密码不匹配'}) } if (errors.length > 0){ // 将errors变量传递给注册页模板 res.render('register', { errors: errors }); }else{ res.render('login') } }
页面模板代码修改
<ul> <% if (typeof errors != 'undefined'){ %> <% errors.forEach(error =>{ %> <!-- 使用<%= 语法输出变量内容 --> <li><%= error.message %></li> <% }) %> <% } %> </ul>
内容的提问来源于stack exchange,提问作者user16799101
相关产品推荐
相关产品推荐

