0

クライアントからデータを受け取りたいので、express 4 とミドルウェアの body-parser を使用します。しかし、url: localhost:5555/bookを入力すると、ページにName: undefinedというメッセージが表示され、url: localhost:5555/book/form.htmlを入力すると、ページにCannot POST /book/form.htmlというメッセージが表示されます。これが私のコードです。

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>

サーバー.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

私は html を使用しません。私は jade に置き換えました。そして、私は app.route() を使用します。

フォーム.ジェイド

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 に答える
0

私が見たところ、あなたはapp.postルート上でやっている/bookので、エクスプレスは POST リクエストを期待しています。

しかし、URLにアクセスするとhttp://localhost:5555/bookGETリクエストを行っているため、エラーが発生します。

フォームを表示するための 1 つのページ (つまり GET 要求app.get) と、投稿要求を受け入れるための 1 つのページが必要です。

于 2014-10-29T11:28:46.580 に答える