0

I want to receive data from client, so I use express 4 and middleware body-parser. But I input url:localhost:5555/book, page show the message: Name: undefined, and I input url:localhost:5555/book/form.html, page show the message Cannot POST /book/form.html. Here is my code.

form.html

<form action='./book' method='post'>
    <input type='text' name='name' value='fred'>
    <input type='text' name='tel' value='0926xxx572'>
    <input type='submit' value='Submit'>
</form>

server.js

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

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

app.post('/book', function(req,res){
    console.log(req.body.name);
    console.log(req.body.tel);

    res.send('Name: '+req.body.name);
    res.send('country: '+req.body.tel);
    res.end();

});

app.listen(5555);  
peggy_Lin
  • 47
  • 6

2 Answers2

0

From what I see, you're doing a app.post on the route /book so express expects a POST request.

But when you go to the url http://localhost:5555/book you are doing a GET request, thus the error.

There should be one page (a GET request therefore a app.get) for displaying the form and one page for accepting post requests.

achedeuzot
  • 4,164
  • 4
  • 41
  • 56
0

I don't use html ,I replaced by jade. And I use app.route().

form.jade

form(action='./book' method='post')
input(type='text' name='name' value='fred')
input(type='text' name='tel' value='0926xxx572')
input(type='submit' value='Submit')

server.js

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

app.set('views', './views');
app.set('view engine', 'jade');
app.engine('jade', require('jade').__express);

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

app.route('/book')
  .get(function(req, res) {
    //res.send('Get a random book');
    res.render('form');
  })
  .post(function(req, res) {
    res.send('Name: '+req.body.name +'<br>'+ 'tel: '+req.body.tel);
  })

app.listen(5555);
peggy_Lin
  • 47
  • 6