Please help. Form not posting?

Hi

I have this code below but when I post it and console dot log the request the body is empty. I am also sending the json back but all the parameters are empty as well

the handler

router.post('/transaction', function (req, res, next){
    let desc = req.body.test
   
    console.log(req)
    console.log(desc)
    res.json({description:desc
    
})

the form

<form action="/routes/api/transaction" method="post">
        <input type="text" name = "test" value="test">
        <input type="submit" value="Submit">
      </form>

You have not posted enough information, for instance, are you using express or just node on it’s own ? What does your router look like ?
In any event I can see that the callback argument to your middleware function (next()) is not being activated in the post method.
Post more of your code for more clarity.

HI

Thank you for your reply.

I am using node JS.

this is my server.js file.

// server.js
// where your node app starts

// init project
const express = require('express');
const app = express();

const bodyParser = require('body-parser');

// we've started you off with Express, 
// but feel free to use whatever libs or frameworks you'd like through `package.json`.

// http://expressjs.com/en/starter/static-files.html
app.use(express.static('public'));
app.use(bodyParser.json())

let appApi = require('./routes/api');
app.use('/routes/api', appApi);

app.get('/', function(request, response) {
  response.sendFile(__dirname + '/views/children.html');
});

app.get("/:word",function(req,res,next){
  res.sendFile(__dirname + '/views/accountpage.html');
  //let resObj = {"echo":req.params.word};
  //res.json(resObj);
});


app.use((req, res, next) => {
  return next({status: 404, message: 'not found'})
})

app.use((err, req, res, next) => {
  let errCode, errMessage

  if (err.errors) {
    // mongoose validation error
    errCode = 400 // bad request
    const keys = Object.keys(err.errors)
    // report the first validation error
    errMessage = err.errors[keys[0]].message
  } else {
    // generic or custom error
    errCode = err.status || 500
    errMessage = err.message || 'Internal Server Error'
  }
  res.status(errCode).type('txt')
    .send(errMessage)
})




// listen for requests :)
const listener = app.listen(process.env.PORT, function() {
  console.log('Your app is listening on port ' + listener.address().port);
});

this is the rest of my routes file that routes the forms action call.

const router = require('express').Router()
const mongoose = require ('mongoose');
mongoose.connect(process.env.MONGO_DB);
const ModelChild = require ('../models/child');


router.get('/accountpage/:word', function(request,response,next) {
  
  ModelChild.find({childName:request.params.word}, function(error,data){
    if(error) return next(console.log(error))
    if (data[0]) return (response.json(data[0]))

    const newChild = new ModelChild({childName:request.params.word})
    newChild.save((err,person)=>{ 
      if(err) return next(console.log(err))
      console.log(person)
      response.json(person)
    });
  });
});  
  
router.post('/transaction', function (req, res){
    let desc = req.body.test
    
    console.log(req)
    console.log(desc)
    res.json({description:desc})
    
})

module.exports = router; 

Thanks for your reply.

Just worked it out.

Sorry - I did not app.use the urlencoded body-parser function.

Sorry

Thanks for your time

Thanks @Dereje1 for looking into it. I figured it out - I really needed to look at “more of the code” myself.