2014-07-03 101 views
0

我試圖使用POST方法將表單數據傳到節點服務器。 這是我的HTML代碼,使用node.js POST數據

<html> 
    <head> 
      <title> 
       Node Architecture 
      </title> 
    </head> 
<body> 
    <h1>Node Architecture</h1> 
    <h3>Enter Your name.</h3> 
    <form action="/" method="POST"> 
    <input type="text" name="eventname" /> 
    <input type="submit" value="Go" /> 
</form> 

</body> 
</html> 

這是我的節點的應用程序,index.js

var app = require('express')(); 
var http = require('http').Server(app); 
//var io = require('socket.io')(http); 
//var qs = require('querystring'); 

app.get('/', function(req, res){ 
    res.sendfile('index.html'); 
}); 
app.get('/events', function(req, res){ 
    res.sendfile('events.html'); 
}); 
app.get('/movie', function(req, res){ 
    res.sendfile('movie.html'); 
}); 

app.post('/', function(req, res) { 
    var name = req.body.eventname; 
    console.log(name); 
}); 



http.listen(3000, function(){ 
    console.log('listening on *:3000'); 
}); 

現在,當我點擊提交我得到一個錯誤信息是如下,

TypeError: Cannot read property 'eventname' of undefined at Object.handle 

如何將輸入的名稱打印到我的控制檯?

回答

0

Express在默認情況下不解析請求主體,您將不得不使用中間件來執行此操作。

試試這個。

var express = require('express'); 
var app = express() 
    .use(express.bodyParser()); 

... 
... 

此外,您應該閱讀此article。它解釋了與共同體解析方法有關的一些問題(及其解決方案)。

0

將這些行添加到您的app.js.

需要身體分析器。

var bodyParser = require('body-parser'); 

放在你的第一個app.get之前,那會更好。

app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded()); 

祝你好運。