2016-01-05 86 views
0

我是新來的節點。無論我想要的是簡單的提交和提交後重定向到特定的模板。這裏是我的目錄結構Nodejs重定向不起作用

  • node_modules
  • index.js
  • 的login.html
  • 的test.html

這是我index.js文件

var app = require('express')(); 
var http = require('http').Server(app); 
var express = require('express') 
var bodyParser = require('body-parser') 

app.get('/', function(req, res) { 
    res.sendFile(__dirname + '/login.html'); 

}); 

app.post('/login', function(request, response) { 
    console.log(request.body.user); 
    console.log(request.body.password); 
    if (request.body.user === "[email protected]" && request.body.password === "123") { 
     console.log("logged in"); 
     response.statusCode = 200; 
     response.setHeader("Location", "/home"); 
     response.end(); 
    } 
}); 

app.get('/home', function(req, res) { 
    res.sendFile(__dirname + '/test.html'); 

}); 

http.listen(3001, function() { 
    console.log('listening on *:3001'); 
}); 

在我login.html文件我有一個簡單的形式

 <label for="user" class="sr-only">Email address</label> 
     <input type="email" id="user" class="form-control" name="user[email]" placeholder="Email address" required autofocus autocomplete="on"> 
     <label for="password" class="sr-only">Password</label> 
     <input type="password" id="password" name="user[password]" class="form-control" placeholder="Password" required> 
     <div class="checkbox"> 
      <label> 
       <input type="checkbox" value="remember-me"> Remember me 
      </label> 
     </div> 
     <button class="btn btn-lg btn-primary btn-block" type="button" id="submit">Sign in</button> 

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
    <script> 
     $(document).ready(function() { 
      var user, pass; 
      $("#submit").click(function(event) { 
       user = $("#user").val(); 
       pass = $("#password").val(); 
       $.post("/login", {user: user, password: pass}, function(data) { 
        if (data === 'done') 
        { 
         alert("login success"); 
        } 
       }); 
      }); 
     }); 
    </script> 

當我跑我在localhost:3001login.html應用出現,如果我提交表單與username:[email protected]password:123它不重定向到test.html,雖然我可以讀取控制檯消息"logged in"

+1

嘗試'response.redirect' – brandonscript

回答

0

而不是通過一個AJAX調用($.post())提出請求,以/login,只是讓表單提交給它,而不是:

<form action='/login' method='post'> 
... 
</form> 

在您當前的情況下,您將重定向AJAX請求/home,而不是整個頁面。

此外,當用戶名和/或密碼不匹配時,您的處理程序不執行任何操作,這意味着請求將停止。在這種情況下,您還需要發送迴應(也許重定向到錯誤頁面或再次登錄頁面)。

+0

謝謝,刪除阿賈克斯後,它按預期工作 – aroSuv

0

你可以嘗試使用上明示重定向

app.post('/login', function(request, response) { 
    console.log(request.body.user); 
    console.log(request.body.password); 
    if (request.body.user === "[email protected]" && request.body.password === "123") { 
     console.log("logged in"); 
     response.redirect('/home') 
    } 
}); 

文檔這裏(http://expressjs.com/en/api.html#res.redirect

+0

感謝,現在它沒有顯示任何錯誤,即使我調試它,上面清清楚楚地寫着 「200回家」,但它根本不打開我的test.html文件 – aroSuv