如何使用快速响应保留在同一页面而不进行重定向?

Ram*_*nta 5 javascript response node.js express

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

当出现引导模式时,浏览器会不断加载页面,等待响应。

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

app.post('/', (req, res) => {
    Users.findOne({
        email: req.body.email
    })
    .then(user => {
        if (user) {
            obj = req.body.email
            res.redirect('/survey')
        }
    })
})
Run Code Online (Sandbox Code Playgroud)

我试图添加一条else语句,以防找不到用户:

...
else  {
  console.log('User not found')
  return
}
Run Code Online (Sandbox Code Playgroud)

我不想重定向到同一页面,因为模式无法正常工作。

是否有res实现此目的的方法?

Sar*_*aaz 1

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

\n\n

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

\n\n

如果您仍然想在不使用ajax提交表单的情况下执行此操作,可以通过添加查询字符串将用户重定向到相同的url

\n\n
res.redirect(\'/same-path?error=user_not_found\') \n
Run Code Online (Sandbox Code Playgroud)\n\n

并在客户端 JavaScript 中检查页面加载时的查询参数

\n\n
$(document).ready ( function(){\n    var url = window.location.search;\n    var queryStr = url.split("?")[1];\n\n    if(queryStr) {\n        let hash = queryStr.split(\'&);\n        for (var i = 0; i < hash.length; i++) {\n            params=hash[i].split("=");\n            if(params[0] == \'error\' && params[1] == \'user_not_found\') {\n                // SHOW YOUR MODAL HERE\n            }\n        }\n    }\n});\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n