如何使用快速响应保持在同一页面而无需重定向?

时间:2018-01-04 19:11:27

标签: javascript node.js express response

考虑一个以电子邮件为输入的简单表单。如果身份验证失败,则提交按钮会调用引导模式。如果成功,则会重定向到下一个视图。

当出现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方法才能实现此目标?

1 个答案:

答案 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
            }
        }
    }
});​