我当前正在创建一个应用程序,在该应用程序中,我使用MongoDB来存储登录数据,用于创建API的nodejs和用于显示页面的前端JS HTML。我正在创建用户,在这里我通过获取ajax POST调用将电子邮件ID和密码传递给后端节点服务器。后端api路由在数据库中创建用户。创建用户后,我想要重定向到其他页面。我怎样才能做到这一点?她是我的代码段。
//前端获取调用
async function createUser(email , password) {
return fetch("http://localhost:3000/user",
{
// Adding method type
method: "POST",
// Adding body or contents to send
headers :{
"content-type": "application/json"
},
body: JSON.stringify({
"userId" : email.value,
"password" : password.value
})
});
}
//结束代码
app.post('/user', async (req, res) => {
// res.header("Access-Control-Allow-Origin", "*");
// res.header("Access-Control-Allow-Methods", "POST,OPTIONS");
const {error} = validate(req.body);
if (error) {
return res.status(400).send(error.details[0].message);
}
let user = await User.findOne({userId : req.body.userId});
if(user) return res.status(400).send("User already registered");
let newUser = new User (
{
userId : req.body.userId,
password : req.body.password
}
);
newUser = await newUser.save();
res.redirect('/logged');
//res.send(newUser)
//res.send("<h1>Hi</h1>");
//res.sendFile((path.join(__dirname+'/loggedon.html')));
//res.send("<h1>Hi</h1>");
}
);
app.get('/logged' , function(req, res){
res.send("<h1>Hi</h1>");
// res.setHeader(200 , 'Content-Type' , 'text/html');
// fs.readFile('./loggedon.html', function(err , data){
// res.write("<h1>Hi</h1>");
// })
});
我正在检查仅发送HI。但这可以在本地服务器上正常工作。但是我将如何将数据发送到前端。请告诉我。注释行是我已经尝试过的东西。
答案 0 :(得分:0)
res.redirect
发送HTTP重定向响应,表示“您从此URL请求了一些数据。您可以从此URL获取它。”
自从您使用Ajax发出请求以来,将遵循重定向,请求新的URL,并将结果传递给Ajax处理程序。
您还没有编写处理程序(或者,如果您有写处理程序,就不必费心把它包含在问题中),所以什么也没发生。
此外:请注意,这并不意味着“在主浏览器窗口中加载新URL”。
仅在首先将请求加载到主浏览器窗口中的情况下,才会将新URL加载到主浏览器窗口中。
您不是。这是一个Ajax请求。
您可以在承诺解决后,让Ajax处理程序为location
分配一个新值。
坦率地说,如果要加载新页面,我首先会质疑Ajax的使用,只是将系统设计为使用常规表单提交,而完全不涉及客户端JS。