我已經閱讀了關於如何配置express以偵聽POST請求的其他幾個問題,但是當我嘗試打印出發送到服務器的簡單POST查詢時,我不斷獲取空的JSON或未定義。在express.js中接受POST請求
我有這樣的設置:
//routes
require('./routes/signup.js')(app);
// Configuration
app.configure(function(){
app.use(connect.bodyParser());
app.use(express.methodOverride());
app.register(".html", hulk);
app.set('views', __dirname + '/views');
app.set('view options', {layout: false});
app.set('view engine', 'hulk');
app.use(express.static(__dirname + '/public'));
app.use(app.router);
});
然後routes/signup.js
看起來是這樣的:
var common_functions = require('../common_functions.js');
var views = require('../views/view_functions.js');
var globals = require('../globals.js');
var mongoose = require('mongoose');
//declare classes
var User = mongoose.model('User');
module.exports = function(app){
/**
* SignUp GET
*/
app.get('/signup', function(req, res){
res.render('signup/signup.html');
});
/**
* SignUp POST
*/
app.post('/signup', function(req, res){
console.log(JSON.stringify(req.body));
console.log(req.body);
res.send(JSON.stringify(req.body));
});
}
模板看起來是這樣的:
{{> header.html }}
{{> navigation.html }}
{{> body.html }}
<form action="/signup" method="post">
<input name="email"/>
<input type="submit"/>
</form>
{{> footer.html }}
有nothi特別感興趣的任何部分。
這兩個console.log
的打印輸出未定義,而res.send()
只是返回與以前相同的html。我在這裏做錯了什麼?
是路由文件之前或配置塊後裝?如果在此之前,路由器中間件正在被添加到bodyParser之前的堆棧中。將路由文件移動到配置塊下面。 – 2012-07-09 15:44:02
是的,完全是它。如果你願意,可以添加它作爲答案,我會接受它!謝謝。總是重要的要記住JavaScript是INTERPRETED NOT COMPILED !!! – 2012-07-09 15:46:38