2016-09-01 4 views
0

나는 노드 JS에 대해 매우 익숙하다. 단순히 다른 페이지로 단추를 리디렉션하고 싶습니다. 그러나 리디렉션을 시도 할 때마다 GET/GET 할 수없는 페이지로 리다이렉트하려고합니다. 난 그냥 잘못된 장소 또는 무엇에 넣어 경우노드 JS 리디렉션

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

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

는 잘 모르겠지만, 나는이 일에 도움이 필요합니다 : I 리디렉션 구현하기 위해 노력하고 현재의 구문은 다음과 같습니다. 고마워요

+0

당신은'GET/brand'을 시도하고 있습니까? –

+0

질문을 경로로 업데이트하십시오. –

+0

사용중인'Express '버전은 무엇입니까? –

답변

0

리디렉션 할 경로가 누락 된 것처럼 보입니다.

사용할 모든 경로를 정의해야합니다. 정의되지 않은 각 경로는 404 상태 코드와 함께 "찾을 수 없음/xxx"를 반환합니다.

당신은 단순히 추가하여 다른 경로를 정의

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

그 질문에 그가하고있는 것이 아닙니까? –

+0

질문에 게시 한 경로가 하나 뿐인 것으로 가정합니다. – Nitzo

+0

답변에 단 하나만 있습니다 : p –

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'); 
}); 
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'; 
}); 
0

을 Express j의 페이지로 리디렉션하려면 컨트롤러에서 리디렉션 방법을 사용하면됩니다.

res.redirect('controller/method'); 
0

당신은 다음과 같은 방법으로 app.js의 코드를 표시했습니다있는 당신의 루트 파일이 필요합니다 : 그래서 당신은했습니다 주요 app.js에 그

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

을 앱을 정의하고 뷰와 엔진을 설정하면 경로를 사용할 수 있습니다.

0

페이지에서 다른 페이지로 검색하려면 일부보기 엔진을 사용해야합니다.

예 예 로그인 옥 (pug) 파일이 있습니다. "login.pug"file.When이 "/ 로그인"API는이 파일에서 호출됩니다

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/" 
     } 

     }); 
     } 

그래서이되고, 내 서버 API (/ 로그인 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' 
       }); 

      } 
     } 
    }) 
}); 

에 따라 충돌합니다 post response` "window.location"뷰를 변경합니다. 예를 들어, 로그인에 성공 응답 후에, 나는이 /welcome API에 GET 요청을 호출 지금

http://localhost:8000/welcome 

에 보낼 수 있습니다.이 파일을 서버에 씁니다.

이렇게하면보기를 변경할 수 있습니다.

아마도 도움이 될 것입니다.