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

M.S*_*ikh 2 javascript forms http node.js

嘿我正在尝试使用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>
Run Code Online (Sandbox Code Playgroud)

我的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);
});
Run Code Online (Sandbox Code Playgroud)

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

Edm*_*ues 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());
Run Code Online (Sandbox Code Playgroud)

但是,我已经看到你已经宣布了你的表格enctype='multipart/formdata'.这通常用于进行文件上传,如果它真的是你想要的,你将需要使用另一个解析器.