我正在尝试使用POST方法将表单数据传递到节点服务器。 这是我的HTML代码,
<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 :(得分:0)
将这些行添加到app.js中。
需要正文解析器。
var bodyParser = require('body-parser');
放在你的第一个应用程序之前会更好。
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
祝你好运。
答案 1 :(得分:0)
Express默认不解析请求正文,您必须使用中间件来执行此操作。
试试这个。
var express = require('express');
var app = express()
.use(express.bodyParser());
...
...
另外,您应该阅读此article。它解释了与常见的身体解析方法相关的一些问题(及其解决方案)。