2012-11-18 138 views
4

我想發佈一些數據到服務器。問題是,似乎服務器無法接收數據。nodejs - req.body is undefined

所以我的文章的數據是這樣的:

name=hello&email=there&message=sometext 

和我的服務器代碼是這樣的:

var url = require('url'), 
    express = require('express'), 
    http=require('http'), 
    path = require('path'), 
    nodemailer = require('nodemailer'); 

var app = express(); 
var server = http.createServer(app); 


app.engine('.html', require('ejs').__express); 
app.set('views', __dirname + '/views'); 
app.set('view engine', 'html'); 
app.use(express.static(path.join(__dirname, 'public'))); 


app.get('/', function(req, res){ 
    res.render('home'); 
}); 

app.use(express.bodyParser()); 

app.post('/', function(req, response){ 

    console.log(req.body); 
    // console.log(request.body.name); 

}); 

server.listen(4000); 
console.log('server running ' + 'now ' + Date.now()); 

console.log(reg.body)運行,終端輸出爲 「不確定」

+0

'name = hello&email = there&message = sometext'似乎給我'GET'數據。你應該在** AJAX POST **中發送'form'或'params' ** – InspiredJW

+0

這是ajax文章,看看這個截圖https://www.dropbox.com/s/joacijxke8pyfox/Screen%20Shot%202012 -11-18%20at%208.18.25%20 PM.png –

+0

您使用哪種版本的快遞?你也可以嘗試記錄整個'req'對象,這很可能會顯示足夠的信息,以便你自己回答你的問題;) – Tiddo

回答

0

move app.use(express.bodyParser())); (express.static(path.join(__ dirname,'public')));

4

所有查詢字符串的輸出默認解析爲app.use(express.bodyParser()); ..簡單的解決方案是嘗試記錄req.query,類似於

console.log(req.query); 
+0

如果它解決了您的問題,請將其標記爲答案。即使這是一個過時的問題。 –

+0

用你在回答中說過的方式已經在Express 4中被棄用了。我發現這個答案很有用,但是使用'bodyParser'的正確方法在這裏:http://stackoverflow.com/questions/24330014/bodyparser-is-棄用-EXPRESS-4 – Sawtaytoes