用express server打开新的html页面

时间:2016-08-14 19:55:32

标签: javascript html node.js express

我有一个带2个按钮的登录页面。我希望当我点击注册按钮时,会打开一个新的html页面(register.html)。所有文件都位于同一文件夹中。

到目前为止我尝试了什么: 我的 index.html 文件(主页):

List<string> types = new List<string> { "Hearts", "Diamonds", "Spades", "Clubs" };
List<dynamic> cards = new List<dynamic>
{
    new {Text = "Ace", Number = 11 },
    new {Text = "2", Number = 2},
    new {Text = "3", Number = 3},
    new {Text = "4", Number = 4},
    new {Text = "5", Number = 5},
    new {Text = "6", Number = 6},
    new {Text = "7", Number = 7},
    new {Text = "8", Number = 8},
    new {Text = "9", Number = 9},
    new {Text = "Jack", Number = 10 },
    new {Text = "Queen", Number = 11 },
    new {Text = "King", Number = 12 }
};

var cardDeck = (from type in types
                from card in cards
                select new Card(card.Text, type, card.Number)).ToList();

server.js:

<!DOCTYPE html>
<html>
    <head>
        <title>Login</title>
        <link rel="stylesheet" href="CSS.css">
        <script src="JS.js"></script>
        <script src="http://code.jquery.com/jquery-1.12.4.min.js"></script>
    </head>
    <body>

        <div id="login"> 
            User Name:<br>
            <input type="text" id="username"><br>
            Password:<br>
            <input type="password" id="password"><br><br>
        <input type="button" onclick="loginUser()" value="Login"></button>
        <input type="button" onclick="RegisterUser()" value="Register"></button>
    </div>


</body>
</html>

Javascript文件:

var express = require('express');
var lastResult = '';
var app = express();
var path = require('path');

var bodyParser = require('body-parser');
app.use(bodyParser());

app.use(express.static(path.join(__dirname + '/')));

app.get('/register',function(req,res){
  res.sendFile('/register.html');
});

app.listen(3000);

还有我想在点击后打开的注册表,html文件。 我试图创建一个&#34; RegisterUser()&#34;函数调用服务器上的get函数的JS文件。 我是所有node.js中的新手,表达服务器世界。如果没有正确的方法,请纠正我。

谢谢!

3 个答案:

答案 0 :(得分:0)

  

我希望当我点击注册按钮时,会打开一个新的html页面(register.html)

您正在发出Ajax请求,然后对服务器发送的数据不执行任何操作。

如果您想打开新页面...只需使用链接。

<a href="/register">Login</a>

答案 1 :(得分:0)

如果您只是想在不使用<a>元素的情况下将用户重定向到其他页面,则可以使用javascript!

有两种方法可以做到这一点,一种是模拟用户点击<a>标签,然后创建新链接,另一种模拟http重定向。

模拟用户点击的好处是,用户可以使用浏览器的后退和前进按钮在页面之间导航。

以下是模拟点击的方法:

window.location.href = 'your link'

如果您想模拟http重定向:

window.location.replace('your link')

如果你想从你的本地服务器(文件夹)中取出文件,那么只需调用该文件,它就像这样:

window.location.replace('register.html`)

注意,这只适用于前端脚本而不需要jQuery。如果你想让它在后端工作,那么你将需要另一个名为socket.io的node.js插件。使用套接字,您可以允许客户端调用服务器来执行功能。您可以在此处详细了解:socket.io

我不认为使用托管服务器的server.js文件也可以在前端执行客户端的功能。我通常有两个文件,index.js这是我的服务器文件,是node.js读取的文件,然后我有client.js这是发送给客户端的文件。它只是让事情变得更简单。

答案 2 :(得分:-1)

您可以更改注册按钮的onClick属性以将浏览器定向到注册页面,然后您的js服务器将发送html文件。

<input type="button" onclick="window.open('http://localhost:3000/register')" value="Login"></button> 

以上内容将在新标签页中打开,从当前标签页重定向使用:

<input type="button" onClick="location.href='http://localhost:3000/register'" value="Login"></button>

如果您没有在本地运行应用程序,请将localhost替换为您的IP,希望这会有所帮助!