2014-02-13 32 views
0

我是新的節點和表達式,我做了一個小應用程序,但它不起作用。我確實張貼在第1頁和應用doesn't顯示頁面2.結構和代碼是:Express.js:node.js,express.js和jade在表單文章中,沒有顯示第二頁

/ 
/controller/controllers.js 
/node_modules/express 
      /jade 
      /mongoose 
/view/index1.jade 
    /index2.jade 
    /layout.jade 
app.js 
package.json 

的app.js

/* server */ 
var express = require('express')  
    , routes = require('./routes') 
    , fs = require('fs'); 

//Create server 
var app = express.createServer(); 

//Use controller 
var controllers_path = __dirname + '/controllers' 
    ,controller_files = fs.readdirSync(controllers_path); 
    controller_files.forEach(function (file) { 
     require(controllers_path+'/'+file)(app); 
}); 

//Jade configuration 
app.configure(function() { 
    app.set('view options', { layout: false }); 
    app.use(express.static(__dirname + '')); 
}); 

app.listen(3001); 
console.log("listening on port %d", app.address().port); 

的controller.js

module.exports = function(app, auth){ 

    // Get 
    app.get('/test1', function(req, res){ 
     res.render('index.jade', {}); 
    }); 

    // Post 
    app.get('/test2', function(req, res){ 
     res.render('index2.jade', {}); 
    }); 

}; 

的index.jade

的索引2 .jade

extends layout 
block content 
    p Page 2 

的layout.jade

h1 Test layout 
block content 

謝謝!

+1

您沒有處理帖子的路徑... – Kiran

回答

0

問題是您沒有/test2的POST處理程序。在您的HTML中,您指定了method="POST",但在您的控制器中,您只處理GET方法。

你想把它改成這樣:

// Post 
app.post('/test2', function(req, res){ 
    res.render('index2.jade', {}); 
}); 

順便說一句,如果你要處理所有請求類型,你可以可以使用app.all,然後決定基於方法類型做什麼:

app.all('/test2', function(req, res){ 
    if(req.method==='GET'){ 
     // one response for GET requests 
    } if(req.method==='POST'){ 
     // another response for POST requests 
    } else { 
     // catch all...PUT, DELETE, etc. 
    } 
}); 
+0

我改變了它,當按下按鈕時,應用什麼也不做。我把日誌放在app.post .....並通過控制檯顯示。 – vicrab

+0

您是說POST處理程序的'console.log'確實不會在服務器上發生嗎? –

+0

對不起,沒有顯示日誌,沒有進入app.post('/ test2',函數(req,res) – vicrab

相關問題