首页 > 解决方案 > 如何将 html 数据从节点 js 发送到前端?

问题描述

我目前正在创建一个应用程序,我使用 MongoDB 存储登录数据,使用 nodejs 创建 API 和前端 JS HTML 来显示页面。我正在创建用户,我通过 fetch ajax POST 调用将电子邮件 ID 和密码传递给后端节点服务器。在 DB 中创建用户的后端 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。但这在本地服务器上可以正常工作。但是我将如何将数据发送到前端。请告诉我。注释行是我已经尝试过的东西。

标签: javascripthtmlnode.jsexpress

解决方案


res.redirect发送一个 HTTP 重定向响应,意思是“你从这个 URL 请求了一些数据。你可以从这个 URL 获取它”。

由于您使用 Ajax 发出请求,因此将遵循重定向,请求新的 URL,并将结果传递给 Ajax 处理程序。

你还没有编写处理程序(或者,如果你有,你没有费心将它包含在问题中)所以什么都没有发生。


旁白:重要的是要注意这并不意味着“在主浏览器窗口中加载新 URL”。

新的 URL 只会在请求首先被加载到主浏览器窗口时才会被加载。

你的不是。这是一个 Ajax 请求。


可以location让 Ajax 处理程序为 promise 解决时分配一个新值。

坦率地说,如果你想加载一个新页面,我首先会质疑 Ajax 的使用,只是将系统设计为使用常规表单提交,根本不涉及客户端 JS。


推荐阅读