Nodejs Express 重定向不起作用

Posted

技术标签:

【中文标题】Nodejs Express 重定向不起作用【英文标题】:Nodejs Express redirecting does not work 【发布时间】:2018-02-11 09:00:48 【问题描述】:

我目前正尝试在用户单击登录按钮后将其重定向到成功屏幕。一切似乎都工作正常,但页面没有改变。尝试在线搜索,但没有一个解决方案有帮助。

更新看来根本原因是因为路由中的'/'。将其更改为“/home”,现在可以使用了

已解决

以下是我的 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>

server.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'); 

如果您尝试在 ajax 文件中重定向,请使用:

window.location.href = 'your url';

【讨论】:

嗨,我刚刚尝试了你的建议,例如 return res.redirect('./views/success.html');在我的 routes.js 中,但它仍然不起作用 我认为当您单击登录按钮 ajax 调用以发布/登录按钮使用第二个选项时,您正在使用 ajax.. 我设法找到了问题,似乎是因为 app.get('/',function(req,res) res.sendFile(__dirname + '/views/index.html' ); );即使成功,它也将始终返回 index.html。我将 '/' 更改为 '/home',现在似乎工作正常

以上是关于Nodejs Express 重定向不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Nodejs(express)正在运行但请求不起作用

为啥这个重定向不起作用?

为啥页面重定向在 php 中不起作用

为啥这个 .htaccess 重定向不起作用?

使用 Multer 重命名上传的文件不起作用 (Express.js)

PHP重定向不起作用