考虑一个以电子邮件为输入的简单表单。如果身份验证失败,则提交按钮会调用引导模式。如果成功,则会重定向到下一个视图。
当出现bootstrap模式时,浏览器会不断加载页面,等待响应。
我在服务器端使用此代码:
app.post('/', (req, res) => {
Users.findOne({
email: req.body.email
})
.then(user => {
if (user) {
obj = req.body.email
res.redirect('/survey')
}
})
})
我尝试添加else
语句,以防用户找不到:
...
else {
console.log('User not found')
return
}
我不想重定向到同一页面,因为模态不起作用。
是否有res
方法才能实现此目标?
答案 0 :(得分:1)
正确的解决方案是使用ajax提交表单数据和处理响应
基于响应成功/失败,您可以重定向用户或从客户端显示错误模式
如果您仍然希望在不提交Ajax表单的情况下进行操作,则可以通过添加查询字符串将用户重定向到相同的网址
res.redirect('/same-path?error=user_not_found')
并在客户端javascript中检查页面加载时的查询参数
$(document).ready ( function(){
var url = window.location.search;
var queryStr = url.split("?")[1];
if(queryStr) {
let hash = queryStr.split('&);
for (var i = 0; i < hash.length; i++) {
params=hash[i].split("=");
if(params[0] == 'error' && params[1] == 'user_not_found') {
// SHOW YOUR MODAL HERE
}
}
}
});