2017-07-16 150 views
0

我有一個頁面上的id: 'tune-in'按鈕auth.ejs,點擊應該進入新頁面index.ejs使用ajax重定向到新的網址並快速路由

但是,當我單擊按鈕時,index頁面不會呈現。相反,我仍在auth頁面上,但是我確實有消息「應顯示調入主頁」登錄到控制檯。

上的HTML(EJS)頁(視圖文件夾> auth.ejs)

document.getElementById('tune-in').addEventListener('click', function() { 
    $.ajax({ 
     type: 'GET', 
     url: '/tune-in', 
     success: function(){ 
     console.log("should display tune-in home page"); 
     } 
    }); 
}, false); 

控制器文件夾> authController.js

app.get('/tune-in', function(req, res){ 
    res.render('index'); 
    }); 

視圖文件夾> index.ejs 這只是一個普通的html頁面,應該在點擊時呈現。

編輯: index.js

var express = require('express'); 
var cookieParser = require('cookie-parser'); 

// userController takes care of rendering the view and 
// routing requests to the server 
var authController = require('./controllers/authController'); 
var userController = require('./controllers/userController'); 

var app = express(); 

app.set('view engine', 'ejs'); 
app.use(express.static('./public')) 
    .use(cookieParser()); 

authController(app); 

app.listen(process.env.PORT || 4000); 
console.log("Listening to port 4000..."); 
+0

我可以加你'app.js'或是你的主文件是什麼嗎?你也可以添加你處理路由的地方嗎?我想看看您是否設置了正確的模板,以及是否正確設置路線。 –

+0

由於您不要求呈現頁面,因此確實需要此行爲。 $ .ajax只是獲取索引的內容。直到你告訴它它纔會呈現內容。 – error404

+0

@AnamulHasan但我告訴它要在authController.js – Kek

回答

1

如果我沒看錯,這是你所需要的。

document.getElementById('tune-in').addEventListener('click', function() { 
$.ajax({ 
    type: 'GET', 
    url: '/tune-in', 
    success: function(data){ 
    console.log("should display tune-in home page"); 
    // data must be valid html 
    $("html").html(data); // this line tells to load the data 
    // $("#otherid").html(data); 
    } 
}); 
}, false); 
+0

我認爲你收到的內容是無效的html。所以它不能正確加載,而是顯示空白頁面。 – error404

+0

不,我偶然重新加載'auth.ejs'。幾分鐘前我已經從索引變成了這個。你的答案完美無缺,謝謝! – Kek