如何解决我如何阻止 ajax 回调函数处理来自服务器的 res.redirect() 响应 我已经被困在这里一天了+如果你知道我将如何解决这个问题,为了我的心理健康帮助“哈哈
我有一个项目,一个简单的登录表单连接到 nodejs,它连接到作为数据库的 MongoDB。
与此问题相关
- 我使用纯 JavaScript,没有使用 jquery
- 我在这个项目中的主要目标是在不重新加载页面(通过模型)的情况下在表单中显示错误,但如果信息正确或找到用户,用户将重定向到个人资料页面 => 现在这就是问题所在。
这是我的客户请求
// *the myModel is a bootstrap function that is used to notify users for error*
const myModel = new bootstrap.Modal(document.querySelector('.modal'),{
focus : true
})
document.querySelector("form").addEventListener("submit",function(e){
e.preventDefault()
data = {
username : document.forms[0].username.value,password : document.forms[0].password.value
}
fetch("/login",{
method: "POST",headers : { "content-Type": "application/json" },body : JSON.stringify(data)
}).then(async(response)=>{
data = await response.json()
if(data.err){
console.log(data.redirect)
document.querySelector(".modal-body").innerText = data.err
myModel.show()
}else{
window.location.replace(data.redirect)
}
})
.catch(err=>{
document.querySelector(".modal-body").innerText = err.message
myModel.show()
})
})
这是我的服务器端代码/响应
.post(function(req,res){
console.log(req.body)
if(req.body.username.trim() && req.body.password.trim()){
const data = req.body
userCollection.findOne({username:data.username},function(error,back){
if(error){
console.log(error.message)
}else{
if(back){
console.log(back)
if(back.password === data.password){
res.redirect("/profile")
}else{
res.json({err : "password or username wrong,try again"})
res.end()
}
}
else{
console.log("no user found,check your inputs again")
res.json({err : "no user found,check your inputs again"})
res.end()
}
}
})
}else{
res.json({err:"username or password empty"})
}
一切正常,除非找到用户并且密码匹配并且我正在尝试重定向用户,客户端请求 .catch
不断向我发送错误 "unexpected token
但如果我将 res.redirect
更改为 res.json("your account has been found")
则它可以正常工作而不会出现任何错误。
我已经被困在这里一天了+如果你知道我将如何解决这个问题,为了我的心理健康帮助“哈哈
~~
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。