Javascript 传递表单数据在Express/Node.js中不起作用

Javascript 传递表单数据在Express/Node.js中不起作用,javascript,node.js,forms,express,Javascript,Node.js,Forms,Express,对不起,如果这是一个补救问题,或一个明显的错误,但这是我的第一个节点项目 基本上,我需要做的是获得一行文本,用户将在前端的表单中输入。不幸的是,无论我做什么,结果日志都是“未定义的”。我不知所措。我将在下面发布完整代码,但给我带来麻烦的部分是: app.get('/test', function(req, res){ res.render('test'); }); app.post('/test',function(req,res){ console.log(req.body)

对不起,如果这是一个补救问题,或一个明显的错误,但这是我的第一个节点项目

基本上,我需要做的是获得一行文本,用户将在前端的表单中输入。不幸的是,无论我做什么,结果日志都是“未定义的”。我不知所措。我将在下面发布完整代码,但给我带来麻烦的部分是:

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

app.post('/test',function(req,res){
    console.log(req.body); 
});
“/test”路由只是临时的,用于测试获取表单响应(如果出于某种原因,这并不明显)

我的完整HTML文件如下所示:

<!DOCTYPE HTML>
<head></head>
<body>
    <form id="myform" action="/test" method="post" enctype="application/x-www-form-urlencoded">
        <input type="text" name="name" id="mytext" />
        <input type="submit" id="mysubmit" />
    </form>
</body>
你需要使用

大致上,这就是您需要的:

var app = require('express')();
var http = require('http').Server(app);
...
var bodyParser = require('body-parser')

app.use(bodyParser.urlencoded({ extended: false }));
...

我认为您在express应用程序中缺少了bodyParser中间件,这就是为什么
req.body
未定义的原因

如果您使用的是Express 3.x,只需使用以下行即可。BodyParser过去与Express 4.0之前的版本捆绑在一起

app.use(express.bodyParser());
如果您使用的是Express4.x,则需要显式地要求主体解析器模块

var bodyParser = require('body-parser');
然后在应用程序中使用它

app.use(bodyParser());

您的其余代码似乎很好。

非常感谢。现在问题解决了。非常感谢你的帮助。干杯
app.use(bodyParser());