如何将HTML数据从节点js发送到前端?

时间:2020-03-25 16:52:54

标签: javascript html node.js express

我当前正在创建一个应用程序,在该应用程序中,我使用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。但这可以在本地服务器上正常工作。但是我将如何将数据发送到前端。请告诉我。注释行是我已经尝试过的东西。

1 个答案:

答案 0 :(得分:0)

res.redirect发送HTTP重定向响应,表示“您从此URL请求了一些数据。您可以从此URL获取它。”

自从您使用Ajax发出请求以来,将遵循重定向,请求新的URL,并将结果传递给Ajax处理程序。

您还没有编写处理程序(或者,如果您有写处理程序,就不必费心把它包含在问题中),所以什么也没发生。


此外:请注意,这并不意味着“在主浏览器窗口中加载新URL”。

仅在首先将请求加载到主浏览器窗口中的情况下,才会将新URL加载到主浏览器窗口中。

您不是。这是一个Ajax请求。


可以在承诺解决后,让Ajax处理程序为location分配一个新值。

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