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

标签 javascript node.js express response

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

当 bootstrap modal 出现时,浏览器一直在加载页面,等待响应。

我在服务器端使用此代码:

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方法来实现这个?

最佳答案

正确的解决方案是使用 ajax 提交表单数据和处理响应

根据响应成功/失败,您可以重定向用户或从客户端显示错误模式

如果您仍然想在没有 ajax 提交表单的情况下这样做,您可以通过添加查询字符串将用户重定向到相同的 url

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

关于javascript - 如何使用快速响应保持在同一页面而不重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48101986/

相关文章:

javascript - 如何抓取(并使用)在 javascript/jQuery 中单击的元素?

javascript - 如何在 p5.js 中实现用户交互?我知道 p5 本身不支持交互,但有没有办法让我自己编写?

node.js - Node ,RabbitMQ和Express

javascript - jQuery $.post 成功函数永远不会触发

javascript - Eslint 未检测到 React 组件的定义属性类型

javascript - Node.js 中的阻塞 IO

node.js - 如何在 MongoDB 中找到类似的文档?

javascript - 使用 socket.io 的单页应用程序中的特定于部分的监听器

javascript - Express pre remove 触发另一个 pre remove on remove

javascript - 使用 Ajax、jquery、Node.js 和 Express POST 数据