重定向到节点js express中的新页面?

时间:2016-10-13 07:45:41

标签: javascript node.js express socket.io

我正在使用socket.io在节点js中创建一个聊天应用程序。当新用户登录到localhost:3000时,会给出一个表单,您可以在其中输入要输入的姓名和房间。一旦按下提交按钮,如何将此用户重定向到适当的房间? dafault的服务器在localhost:3000连接时显示login.html,我希望点击提交时,会发出新请求,以便第二个app.get可以为其提供服务。

app.get("/", function(req, res) {
    res.sendFile(__dirname + "/login.html");
});
app.get("/room", function(req,res) {
    res.sendFile(__dirname + "/chat.html");
});

login.html中的表单 -

var myForm2 = document.getElementById("myForm2");
myForm2.addEventListener("submit", function(e) {
    e.preventDefault();
    document.location = "localhost:3000/room";
});

2 个答案:

答案 0 :(得分:1)

您可以使用res.redirect([status,] path),如下所示:

if (input_are_ok) {
    res.redirect('public/index.html');
}

这将使用指定的HTTP状态代码状态重定向到给定的URL。如果未指定状态代码,则状态代码默认为302(在大多数用例中都很好)

答案 1 :(得分:0)

提交表单后,浏览器使用输入作为查询字符串的参数,将该表单转换为HTTP请求。假设您在login.html中有这样的表单:

<form action="/chat.html">
    <label>Display username</label>
    <input type="text" name="username" placeholder="Display name" required>
    <label>Room</label>
    <input type="text" name="room" placeholder="Room" required>
    <button>Join</button>
</form>

单击后,此html页面将使用2个字符串参数重定向到/ chat路由。您的网址将如下所示:

http://localhost:3000/chat.html?username=yourUserName&room=yourRoom

现在您需要创建一个chat.html,提交后将显示此页面。