Javascript Node.js、express、html表单req.body未定义
我不明白为什么req.body没有定义。它总是访问node.js服务器'/formstuff'中的函数,但req.body未定义 当我查看它发布到cmd的结果时,我在任何地方都看不到我的查询。实际上,res.query和res.params是空的 任何帮助都将不胜感激,谢谢 快递:Javascript Node.js、express、html表单req.body未定义,javascript,html,node.js,forms,Javascript,Html,Node.js,Forms,我不明白为什么req.body没有定义。它总是访问node.js服务器'/formstuff'中的函数,但req.body未定义 当我查看它发布到cmd的结果时,我在任何地方都看不到我的查询。实际上,res.query和res.params是空的 任何帮助都将不胜感激,谢谢 快递: var express = require('express'), app = express(); var fs = require('fs'); var Promise = require('promise')
var express = require('express'),
app = express();
var fs = require('fs');
var Promise = require('promise');
// Handle Get Request
app.get('/', function(req, res){
// get stuff from request
var index;
fs.readFile('./form.html', function (err, data) {
if (err) {
throw err;
}
index = data;
res.setHeader("Content-Type", "text/html");
res.send(index);
});
});
app.post('/formstuff', function(req, res){
console.log(req.body);
res.send();
});
HTML:
身体
{
保证金:0;
}
#头
{
宽度:100%;
颜色:#FAFAFA;
高度:170px;
文本阴影:2px2px0pxRGBA(1501501501);
背景:#39d800;/*旧浏览器*/
背景:-moz线性梯度(顶部,#39d800 0%,#00a008 100%);/*FF3.6+*/
背景:-webkit渐变(线性、左上、左下、色挡(0%,#39d800)、色挡(100%,#00a008));/*铬、Safari4+*/
背景:-webkit线性梯度(顶部,#39d800 0%,#00a008 100%);/*Chrome10+,Safari5.1+*/
背景:-o型线性梯度(顶部,#39d800 0%,#00a008 100%);/*Opera 11.10+*/
背景:-ms线性梯度(顶部,#39d800 0%,#00a008 100%);/*IE10+*/
背景:线性梯度(至底部,#39d800 0%,#00a008 100%);/*W3C*/
过滤器:progid:DXImageTransform.Microsoft.gradient(startColorstr='#39d800',endColorstr='#00a008',GradientType=0);/*IE6-9*/
字体系列:笔刷脚本MT;
字体大小:粗体;
字号:8.5em;
文本对齐:居中;
}
表格组
{
填充:0.8%;
}
字段集
{
字号:2em;
位置:相对位置;
}
输入
{
宽度:150px;
高度:50px;
字体大小:1.2米;
明确:两者皆有;
}
通知
搜寻
您缺少正文分析中间件
如果您不上传文件,您可以只
npm安装body parser
,然后添加app.use(require('body-parser').urlencoded())代码>在任何路线之前。您还需要一些包裹。我建议:
var connect =require('connect'); //
var multer =require('multer'); // This is used when multipart/form-data are required
app.use(connect.json()); // for json
app.use(connect.urlencoded()); // for application/x-www-form-urlencoded
app.use(multer({ dest: './uploads/'}));// for multipart/form-data
这比主体解析器更可取,后者如前所述不安全。请参阅和安装后,它会抛出错误,表示找不到模块“主体解析器”。我检查了,安装后它确实存在于node modules文件夹中。适用于各种版本的Express(例如3.x on up)。确保您遵循了此处的示例:作为不使用主体解析器的原因提供的链接不再有效。该链接描述了与Express捆绑在一起的Express 3bodyParser
中间件,该中间件同时执行URLCoded和multipart。express4的单独主体解析器
模块不支持多部分,只支持urlencoded和JSON。
var connect =require('connect'); //
var multer =require('multer'); // This is used when multipart/form-data are required
app.use(connect.json()); // for json
app.use(connect.urlencoded()); // for application/x-www-form-urlencoded
app.use(multer({ dest: './uploads/'}));// for multipart/form-data