当我使用express时,我不能获得POST数据

i can't get POST data when i use express

本文关键字:数据 不能 POST express      更新时间:2023-09-26

以下是我的代码:

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);