Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting http post form data in Node.JS

Hey I am trying to send the post request using express and node and here is my code.

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>

My app.js file is given below:

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

Now I should get the output as imagename: //value added in the form if true or else null. And I am always getting a null value. I tried to log the value of req.body.imagename and I am getting undefined instead of the value that I inserted in the form. Any help would be appretiated.

like image 906
M.Shaikh Avatar asked Jan 30 '23 01:01

M.Shaikh


2 Answers

You have to add the body-parser to your Express's app.

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

However, I've seen that you've declared your form with the enctype='multipart/formdata'. This is usually used to make file uploads, if it's really what you want, you're going to need to use another parser for it.

like image 153
Edmundo Rodrigues Avatar answered Feb 02 '23 08:02

Edmundo Rodrigues


You required 'body-parser' middleware, but forgot to use it in your express app.

app.use(bodyParser.urlencoded())

and you don't need this one

enctype="multipart/form-data"
like image 41
coockoo Avatar answered Feb 02 '23 09:02

coockoo