2017-09-02 57 views
0

我正在嘗試將用戶重定向到成功屏幕後,他單擊登錄按鈕。一切似乎工作正常,但頁面不會改變。嘗試在線搜索,但沒有解決方案幫助。Nodejs Express重定向不起作用

更新似乎根本原因是因爲路由中的'/'。將其改爲 '/家' 和現在的工作

解決

下面是我的HTML,服務器和路由代碼

的index.html

<!DOCTYPE html> 
<html> 
    <head> 

    <script 
    src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"> 
    </script> 
    <link rel="stylesheet" 
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
    <link rel="stylesheet" type="text/css" href="../public/css/style.css"> 

    </head> 
<body> 
<div ng-app="myApp" ng-controller="loginController"> 
    <div class="container"> 
    <br> 
    <br> 
    <br> 
    <br> 
    <h1 class="welcome text-center" style="text-align:center;">Welcome</h1> 

    <div class="card card-container"> 
    <!-- 
    <h2 class='login_title text-center'>Login</h2> 
    --> 
    <hr> 

     <form class="form-signin"> 

      <p class="input_title">Username:</p> 
      <input type="text" id="inputEmail" class="login_box" ng-model="username" required autofocus> 
      <p class="input_title">Password</p> 
      <input type="password" id="inputPassword" class="login_box" ng-model="password" required> 
     <br> 
     <br> 
      <button class="btn btn-lg btn-primary" type="submit" ng-click="sub()">Login</button> 
     </form><!-- /form --> 
    </div><!-- /card-container --> 
    </div><!-- /container --> 

</div> 

    <script> 
    var app = angular.module('myApp', []); 

    app.controller("loginController", function($scope,$http) { 

    $scope.sub = function() { 

    var data = { 
     username: $scope.username, 
     password: $scope.password 

    } 

    var config = { 
      headers : { 
       'Content-Type': 'application/x-www-form- 
    urlencoded;charset=utf-8;' 
      } 
     } 


    $http.post('/login', data, config) 
.then(
    function(response){ 
    console.log('action on success'); 
    }, 
    function(response){ 
      console.log('action on error'); 
    } 
); 

} 

}); 

</script> 
</body> 
</html> 

服務器.js

var express = require('express'); 
var bodyParser = require('body-parser'); 
var morgan = require('morgan'); 
var config = require('./config'); 


var app = express(); 

app.use(bodyParser.urlencoded({extended:true})); 
app.use(bodyParser.json()); 
app.use(morgan('dev')); 


app.use(express.static(__dirname + '/app')); 
require('./app/routes')(app); 


app.listen(3000,function(err){ 

if(err){ 

console.log(err); 
} 
else{ 

console.log("Listening on port 3000"); 
} 

}); 

route.js

module.exports = function (app) { 


app.get('/',function(req,res){ 

res.sendFile(__dirname + '/views/index.html'); 


}); 

app.post('/login', function(req, res){ 
console.log("post here!"); 
res.setHeader("Content-Type", "text/html") 
res.sendFile(__dirname + '/views/success.html'); 
//res.redirect(__dirname + '/app/views/success.html'); 
res.end; 

}); 

cmd response

回答

1

這裏是我的建議,

  • 如果你想在路由重定向文件,然後使用:

    return res.redirect('your url'); 
    
  • 如果你想在阿賈克斯文件重定向然後使用:

    window.location.href = 'your url'; 
    
+0

您好,我剛纔試了一下你的建議e.g回報res.redirect( './的意見/ success.html');在我的routes.js但它仍然不起作用 – Jackelll

+0

我認爲你使用ajax時,你點擊登錄按鈕ajax調用發佈/登錄按鈕使用第二選項.. – Shadow

+0

我已經設法找到問題,似乎是因爲app.get('/',function(req,res){ res.sendFile(__ dirname +'/views/index.html'); });即使成功,它也會始終返回到index.html。我將'/'改爲'/ home',現在看起來工作正常 – Jackelll