当我使用express时,我不能获得POST数据
i can't get POST data when i use express
以下是我的代码:
var express = require('express');
var app = express();
app.get('/:name', function(req,res){
res.setHeader('Content-Type','text/html');
res.send('<form action="/" method="POST"><input type="text" name="self"/><input type="submit"/></form>');
});
app.post('/',function(req,res){
res.send(req.body.self);
});
app.listen(8080);
我调用localhost:8080/exampleename
并在input里面写一些东西,然后我点击提交按钮。它转到localhost:8080,但节点返回如下错误:
TypeError: Cannot read property 'self' of undefined
at /home/yusuf/Masaüstü/node/ue.js:10:19
at callbacks (/home/yusuf/Masaüstü/node/node_modules/express/lib/router/index.js:160:37)
at param (/home/yusuf/Masaüstü/node/node_modules/express/lib/router/index.js:134:11)
at pass (/home/yusuf/Masaüstü/node/node_modules/express/lib/router/index.js:141:5)
at Router._dispatch (/home/yusuf/Masaüstü/node/node_modules/express/lib/router/index.js:169:4)
at Object.router [as handle] (/home/yusuf/Masaüstü/node/node_modules/express/lib/router/index.js:32:10)
at next (/home/yusuf/Masaüstü/node/node_modules/express/node_modules/connect/lib/proto.js:190:15)
at Object.expressInit [as handle] (/home/yusuf/Masaüstü/node/node_modules/express/lib/middleware.js:31:5)
at next (/home/yusuf/Masaüstü/node/node_modules/express/node_modules/connect/lib/proto.js:190:15)
at Object.query [as handle] (/home/yusuf/Masaüstü/node/node_modules/express/node_modules/connect/lib/middleware/query.js:44:5)
您需要启用body解析器中间件。
在配置路由之前插入。app.use(express.bodyParser());
你也可以在这里配置其他东西,比如视图引擎、静态目录等。例如,
app.set('views', __dirname + '/views');
app.set('view engine', 'swig');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
body允许您获取以POST方式发送的数据。然后可以使用req.body。[name of data]实际访问数据。例如,如果你发送了一个"firstname":
req.body.firstname
还可以使用res.render将数据发送到模板页面。例如,这会将名字发送到由模板语言呈现的索引页。
res.render('index', {fname: req.body.firstname});
您需要bodyParser。以下是添加了解析器的确切代码,并按预期工作:
var express = require('express');
var app = express();
// parses POST bodies:
app.use(express.bodyParser());
app.get('/:name', function(req,res){
res.setHeader('Content-Type','text/html');
res.send('<form action="/" method="POST"><input type="text" name="self"/><input type="submit"/></form>');
});
app.post('/',function(req, res){
res.send(req.body.self);
});
app.listen(8080);
相关文章:
- Highcharts可以从服务器加载数据,但不能更新
- 为什么数据不能't显示在查看页中
- select2 使用 AJAX 加载数据不能选择任何选项
- Google图表:轴#0的数据列不能为字符串类型
- 有没有办法对一些javascript进行沙盒处理,这样它就不能以任何方式将数据发送到服务器
- .findOne 在 Iron Router Route 的数据属性中工作,但 .find 不能
- 为什么我不能在 Angular JS 服务中更改数据.js执行函数后
- 主干不能调用未定义/未加载数据的方法“toJSON”
- 为什么不能关闭我的数据表的排序
- 为什么我不能做.ajax(返回数据;)?jQuery.
- 为什么我不能从jQuery(PHP)接收数据
- 为什么jQuery数据不能与append一起使用
- 使用Papa Parse为什么我不能引用已经解析的数据
- 数据切换和onclick不能一起工作,我太新了,无法应用@epascarello的解决方案
- ng模型数据不能正常工作
- 剑道数据源示意图.数据不能用于下拉列表
- 用nodejs为每个用户保存表数据(不能使用数据库)
- Laravel ckeditor数据不能插入数据库
- jQuery .each显示数组数据-不能算出来
- 从$http service获取的数据不能通过ng-click获取