0

我想从客户端接收数据,所以我使用 express 4 和中间件 body-parser。但是我输入 url: localhost:5555/book,页面显示消息:Name: undefined,我输入 url: localhost:5555/book/form.html,页面显示消息Cannot POST /book/form.html。这是我的代码。

表单.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>

服务器.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);  
4

2 回答 2

0

据我所知,您正在执行app.post路线/book,因此 express 需要一个 POST 请求。

但是,当您转到 url 时,http://localhost:5555/book您正在执行 GET 请求,因此会出现错误。

应该有一个页面(一个 GET 请求因此 a app.get)用于显示表单和一个页面用于接受 post 请求。

于 2014-10-29T11:28:46.580 回答
0

我没用html,换成了jade。我使用 app.route()。

形式.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')

服务器.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);
于 2014-10-30T02:14:06.953 回答