2

これが私のコードです:

var express = require('express');
var app = express();

app.get('/:name', function(req,res){
    res.setHeader('Content-Type','text/html');
    res.send('<form action="/" method="POST"><input type="text" name="self"/><input type="submit"/></form>');
});

app.post('/',function(req,res){
    res.send(req.body.self);
});

app.listen(8080);

localhost:8080/examplenameと呼びます

入力の中に何かを書いて、送信ボタンをクリックします。localhost:8080に移動しますが、ノードは次のようなエラーを返します。

TypeError: Cannot read property 'self' of undefined
    at /home/yusuf/Masaüstü/node/ue.js:10:19
    at callbacks (/home/yusuf/Masaüstü/node/node_modules/express/lib/router/index.js:160:37)
    at param (/home/yusuf/Masaüstü/node/node_modules/express/lib/router/index.js:134:11)
    at pass (/home/yusuf/Masaüstü/node/node_modules/express/lib/router/index.js:141:5)
    at Router._dispatch (/home/yusuf/Masaüstü/node/node_modules/express/lib/router/index.js:169:4)
    at Object.router [as handle] (/home/yusuf/Masaüstü/node/node_modules/express/lib/router/index.js:32:10)
    at next (/home/yusuf/Masaüstü/node/node_modules/express/node_modules/connect/lib/proto.js:190:15)
    at Object.expressInit [as handle] (/home/yusuf/Masaüstü/node/node_modules/express/lib/middleware.js:31:5)
    at next (/home/yusuf/Masaüstü/node/node_modules/express/node_modules/connect/lib/proto.js:190:15)
    at Object.query [as handle] (/home/yusuf/Masaüstü/node/node_modules/express/node_modules/connect/lib/middleware/query.js:44:5)
4

3 に答える 3

4

ボディ パーサー ミドルウェアを有効にする必要があります。ルートを構成する前にこれを挿入します。

app.use(express.bodyParser());

ここで、ビュー エンジン、静的ディレクトリなど、他のものを構成することもできます。たとえば、

app.set('views', __dirname + '/views');
app.set('view engine', 'swig');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
于 2012-12-30T19:27:31.787 に答える
1

req.body を使用すると、POST で送信されたデータを取得できます。その後、 req.body.[name of data] を使用して実際にデータにアクセスできます。たとえば、「名」を送信した場合:

req.body.firstname

res.render を使用して、データをテンプレート ページに送信することもできます。たとえば、これにより、テンプレート言語によってレンダリングされたインデックス ページにファーストネームが送信されます。

res.render('index', {fname: req.body.firstname});
于 2012-12-30T19:28:31.653 に答える
0

bodyParser が必要です。パーサーが追加され、期待どおりに動作する正確なコードは次のとおりです。

var express = require('express');
var app = express();

// parses POST bodies:
app.use(express.bodyParser());

app.get('/:name', function(req,res){
    res.setHeader('Content-Type','text/html');
    res.send('<form action="/" method="POST"><input type="text" name="self"/><input type="submit"/></form>');
});

app.post('/',function(req, res){
  res.send(req.body.self);
});

app.listen(8080);
于 2012-12-30T21:53:39.420 に答える