节点JS重定向

时间:2016-09-01 05:50:54

标签: javascript node.js redirect

我是节点JS的新手。我想简单地将按钮重定向到另一个页面,但每次我尝试重定向时,我都会遇到一个无法获取/(我试图重定向到的页面)。我试图实现重定向的当前语法如下所示:

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/brand', ensureAuthenticated, function(req, res) {
  res.render('index');
});

我不知道我是把它放在错误的地方还是什么,但我需要一个帮助。谢谢

6 个答案:

答案 0 :(得分:1)

这个最简单的重定向示例应该可以正常工作

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

app.get('/', function(req, res) {
   res.sendFile(__dirname + '/index.html'); // create your index.html file
});
app.get('/brand', function(req, res) {
   res.redirect('/');
});

app.listen(3000, function() {
  console.log('Express listening at 3000'); 
});

答案 1 :(得分:0)

看起来你错过了重定向的路线。

您需要定义要使用的每条路线。未定义的每条路线都将返回"不能GET / xxx"有404状态代码。

您只需添加以下内容即可定义另一条路线:

router.get('/route_path', function(req, res) {
   // Do something
});

答案 2 :(得分:0)

您需要提及在收到该路线请求时要发送的文件的路径。

一种方法:

var path = require('path');
router.get('/brand', function(req, res) {
       res.sendFile(path.join(__dirname,'/path/to/index.html');
}

另一种提供静态文件的方法:

app.use('/stat', express.static(__dirname + '/public'));
// allows you to access files through : localhost:port/stat/somefile

在你的前端,对于重定向的按钮:(jquery)

$('#yourBtnId').click(function() {
   window.location.href = 'localhost:8080/brand';
});

答案 3 :(得分:0)

要重定向到快递js中的任何页面,您只需在控制器中使用重定向方法即可。

res.redirect('controller/method');

答案 4 :(得分:0)

您需要以下列方式要求您在app.js中显示代码的路线文件:

var routes = require('./routes/routes');

因此,对于您已定义应用并设置视图和引擎的主app.js,路线可用。

答案 5 :(得分:0)

您必须使用某些视图引擎在页面上为另一个提供服务。

让我举例说明我有一个登录玉(pug)文件。

doctype html
html
  head
    script(src='https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js')
  body
    p
      | Username 
      input(type='text', name='username' ,id='name')
    p
      | Password 
      input(type='password', name='password' ,id='password')
    p
      input(type='Submit', value='Login' onclick="login()")
      |  
      a(href='http://localhost:8000/register') New Register
    p
      #{error}  
    script.
      function login(){
      $.post("http://localhost:8000/login",
      {
        username:document.getElementById("name").value,
        password:document.getElementById("password").value,
      },
      function(data, status){
         if(data.success===true){
            window.location="http://localhost:8000/welcome"
         }
         else{
         window.location="http://localhost:8000/"
         }

      });
      }

所以这是" login.pug" file.When" / login" api将从这个文件中调用,它将命中我的服务器api(/ login api)

app.post('/login', function(req, res, next) {

    checkExistanceOfuser(req.body.username, req.body.password, function(err, flag, data) {
        console.log(err);
        if (err) {
            res.send({
                err: 'SOME_DATABASE_ERROR'
            })
        } else {
            if (flag) {

                req.session.user = data;

                res.send({
                    success: true,
                    message: 'Login Success'
                })


            } else {
                res.send({
                    success: false,
                    message: 'Invalid Credentials'
                });

            }
        }
    })
});  

取决于帖子回复`" window.location"我改变了观点。 例如,成功登录响应后,我将其发送到

http://localhost:8000/welcome

现在,这会在/welcome API上调用get请求。我在服务器

中写这个文件
app.get('/welcome', function(req, res, next) {
    if (req.session && req.session.user) {
        res.render('welcome', { name: req.session.user.name })
    } else {
        res.render('login', { error: 'Invalid Session' });
    }
});

通过这种方式,您可以更改视图。

也许它会有所帮助。