2016-08-14 44 views
0

我有一個帶2個按鈕的登錄頁面。我希望當我點擊註冊按鈕時,會打開一個新的html頁面(register.html)。所有文件都位於同一個文件夾中。用快遞服務器打開新的html頁面

我試過到目前爲止: 我的index.html文件(主頁):

<!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> 

server.js:

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); 

JavaScript文件:

function RegisterUser() { 
    $.get("/register", function(res){ 

    }); 
} 

還有我想要點擊後打開的註冊表,html文件。 我試圖在JS文件上創建一個「RegisterUser()」函數來調用服務器上的get函數。 我是所有node.js中的新人,表達服務器世界。如果這不是正確的方法,請糾正我的錯誤。

謝謝!

+0

你是什麼意思?就像你想要去一個新的頁面?無論哪種方式,你爲什麼不使用錨標籤而不是按鈕?用'Register'替換' ....'',然後適當地設置錨點標記,以便與其他按鈕匹配。 –

回答

0

我想,當我點擊註冊按鈕,一個新的HTML頁(register.html)將打開

你正在一個Ajax請求,然後什麼都不做與服務器發送數據。

如果你想打開一個新的頁面...只是使用一個鏈接。

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

它不工作的人。它只是將我轉移到「file:/// C:/ register」(位於其他文件夾中的文件),即使我將它移動到C也不會打開它。 – Ohad121

+0

@ Ohad121 - 這是因爲你直接從你的磁盤加載了'index.html',而不是從Express Web服務器加載。 – Quentin

+0

你能解釋我將如何能夠在本地運行? – Ohad121

0

如果你只是想用戶到另一個頁面重定向不使用<a>元素,你可以使用JavaScript!

有兩種方法可以做到這一點,一種模擬用戶點擊<a>標籤,然後創建新鏈接,另一種模擬http重定向。

模擬用戶點擊的好處是,用戶可以使用瀏覽器的後退和前進按鈕在頁面之間導航。

這裏是如何模擬點擊:

window.location.href = 'your link' 

如果你想模擬HTTP重定向:如果你想獲得的文件從本地服務器(文件夾)的

window.location.replace('your link') 

然後只需調用該文件,它看起來像這樣:

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

注意,這隻適用於fr ont-end腳本,而不需要jQuery。如果你想讓它在後端工作,那麼你將需要另一個名爲socket.io的node.js插件。使用套接字,您可以允許客戶端調用服務器來執行功能。你可以在這裏閱讀更多關於它:socket.io

我不認爲這是一個好主意,使用您的服務器。js文件託管服務器,以便在前端爲客戶端執行功能。我通常有兩個文件,index.js這是我的服務器文件,是node.js讀取的內容,然後我有client.js這是發送到客戶端。它只是讓事情變得更簡單。

+0

我想構建一個Web應用程序。我不想以某種方式打開服務器的新頁面?謝謝 – Ohad121

+0

@ Ohad121我想可以使用服務器腳本來打開一個新的網頁。如果您使用'socket.io',您可以要求服務器將用戶重定向到新頁面。如果沒有'socket.io',客戶端和服務器之間的通信就會更加困難。如果你想看看,我已經把它鏈接起來了。 –

+0

@ Ohad121此外,您的代碼無法正常工作的原因是您的JavaScript文件未與服務器文件通信。爲了做到這一點,請檢查socket.io。在那裏你可以發出一個來自客戶端的請求,告訴服務器執行某個任務。然後你可以告訴服務器發送迴應或不回覆。 –

-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> 

與IP localhost替換,如果你沒有在本地運行的應用程序,希望這有助於!

+0

這是行不通的。絕對URL必須以一個方案開始(無論如何,沒有理由首先使用絕對URL)。 – Quentin