Rob*_*Coy 3 javascript forms node.js express
很抱歉,如果这是一个补救问题,或者是一个明显的错误,但这是我的第一个 Node 项目。
本质上,我需要做的是获取用户将输入到前端表单中的一行文本。不幸的是,无论我做什么,结果都会记录“未定义”。我不知所措。我将在下面发布完整的代码,但给我带来麻烦的部分是:
app.get('/test', function(req, res){
res.render('test');
});
app.post('/test',function(req,res){
console.log(req.body);
});
Run Code Online (Sandbox Code Playgroud)
'/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>
Run Code Online (Sandbox Code Playgroud)
任何想法/帮助将不胜感激。
这是完整的 app.js 文件
var app = require('express')();
var http = require('http').Server(app);
var exphbs = require('express-handlebars');
var twitter = require('./twitter.js');
var hue = require("./hue_control.js");
//Variable that control Twitter Calls
var api = 'statuses/filter';
var params = {slug:'test', owner_screen_name: 'REDACTED', skip_status: true};
var values = {};
app.engine('handlebars', exphbs({defaultLayout: 'main'}));
app.set('view engine', 'handlebars');
hue.activate();
twitter.tweetStream(api, params, values);
app.get('/test', function(req, res){
res.render('test');
});
app.post('/test',function(req,res){
console.log(req.body); //you will get your data in this as object.
console.log(req.is('json'));
});
app.get('/', function(req, res){
res.render('tweets');
});
app.get('/tweets', function(req, res){
res.render('home', {
profileImg: values.profileImg,
userName: values.userName,
screenName: values.screenName,
text: values.text,
timeStamp: values.timeStamp,
tweetScore: values.tweetScore
});
});
//app.get('/tweets', function(req, res)
http.listen(3000, function(){
console.log('listening on *:3000');
});
Run Code Online (Sandbox Code Playgroud)
我认为您在 Express 应用程序中缺少bodyParserreq.body中间件,这就是未定义的原因。
如果您使用的是 Express 3.x,只需使用以下行。BodyParser 曾经与 Express 4.0 之前的版本捆绑在一起
app.use(express.bodyParser());
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 Express 4.x,则需要明确要求 body-parser 模块
var bodyParser = require('body-parser');
Run Code Online (Sandbox Code Playgroud)
然后在您的应用程序中使用它
app.use(bodyParser());
Run Code Online (Sandbox Code Playgroud)
你的代码的其余部分看起来不错。