在Node.JS中获取http post表单数据

时间:2017-07-10 16:55:04

标签: javascript node.js forms http

嘿我正在尝试使用express和node发送帖子请求,这是我的代码。

的index.html

<html>

<head>
    <title>Test</title>
</head>

<body>
    <form action="/form" method="POST" enctype="multipart/form-data">
        <input type="text" name="imagename"></input>
        <input type="submit" name="submit" value="submit"></input>
    </form>
</body>

</html>

我的app.js文件如下:

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

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

app.post('/form', function(req, res){
 res.setHeader('Content-Type', 'application/json');
 setTimeout(function(){
     res.send(JSON.stringify({
        imagename: req.body.imagename || null

    }));
  }, 1000);
});

现在我应该将输出作为imagename://在表单中添加值,如果为true或者为null。我总是得到一个空值。我试图记录req.body.imagename的值,我得到的是未定义的,而不是我在表单中插入的值。任何帮助都会受到欢迎。

2 个答案:

答案 0 :(得分:6)

您必须将body-parser添加到Express的应用中。

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

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }));

// parse application/json
app.use(bodyParser.json());

但是,我已经看到您已使用enctype='multipart/formdata'声明了自己的表单。这通常用于进行文件上传,如果它真的是你想要的,你将需要使用another parser

答案 1 :(得分:0)

您需要'body-parser'个中间件,但忘记在express应用中使用它。

app.use(bodyParser.urlencoded())

你不需要这个

enctype="multipart/form-data"