2017-11-17 12 views
0

私のフォームはJADEで、このようになります。しかし、私はにconsole.log(req.body)を追加したサーバへのポストメソッドの送信が未定義です - エラー

var express = require('express') 
    , stylus = require('stylus') 
    , nib = require('nib') 


var app = express() 

function compile(str, path) { 
    return stylus(str) 
    .set('filename', path) 
    .use(nib()); 
} 

app.set('views', __dirname + '/views') 
app.set('view engine', 'jade') 
app.use(express.logger('dev')) 
app.use(stylus.middleware(
    { src: __dirname + '/public' 
    , compile: compile 
    } 
)) 
app.use(express.static(__dirname + '/public')) 

app.get('/', function (req, res) { 
    res.render('index', 
    { title : 'Home' } 
) 
}) 

app.post('/test/about', function (req, res) { 
    console.log(req.body); 
    res.render('index', 
    { title : 'Home' } 
) 
}) 

app.listen(3000) 

とそれは今未定義 どうすれば解決することができるよう印刷します:私は次のように定義されたPOST方法をしている私のapp.js

form(action='/test/about', method='post') 
      .form-group 
      label(for='nameFormControlInput1') Name 
      input#nameFormControlInput1.form-control(type='text', placeholder='name') 
    .form-group 
      input(type='submit', value='Add') 

この ?

+1

name="nameFormControlInput1"を追加しますか? –

+0

さて、もう一度実行しましたが、サーバー500はもう表示されません。 (newbie)とにかく 'console.log(req.body)'を追加しました。これで 'undefined'と表示されます。助けて。上記のコードを – Illep

+0

と更新しましたあなたの目的は何ですか?投稿されたデータを取得したいのですか?返信したいのですか? – agit

答えて

0

[OK]を、あなたの入力要素にname属性を追加し、データを掲載した後body-parser

var express = require('express') 
     , stylus = require('stylus') 
     , nib = require('nib') 
     , bodyParser = require('body-parser'); 

    var app = express() 
    function compile(str, path) { 
     return stylus(str) 
      .set('filename', path) 
      .use(nib()); 
    } 

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

    app.set('views', __dirname + '/views') 
    app.set('view engine', 'jade') 
    // app.use(express.logger('dev')) 
    app.use(stylus.middleware(
     { 
      src: __dirname + '/public' 
      , compile: compile 
     } 
    )) 
    app.use(express.static(__dirname + '/public')) 

    app.get('/', function (req, res) { 
     res.render('index', 
      { title: 'Home' } 
     ) 
    }) 

    app.post('/test/about', function (req, res) { 
     console.log(req.body); 

     res.render('formresult', 
      { 
       title: 'Form Result', 
       name: req.body.nameFormControlInput1 
      } 
     ) 
    }) 

    app.listen(3000) 

を使用する必要があるすべての最初の、あなたはreq.body.nameFormControlInput1

を使用してアクセスもできますそして、私は別のヒスイのファイルを作成します投稿されたデータを表示します。あなたが取得しているエラーを表示することができます

formresult.jade

- if(name) 
h1=name 
- else 
h1 No data 

index.jade

入力フィールド

form(action='/test/about', method='post') 
.form-group 
    label(for='nameFormControlInput1') Name 
    input#nameFormControlInput1.form-control(type='text', placeholder='name', name="nameFormControlInput1") 
    .form-group 
    input(type='submit', value='Add') 
+0

の代わりに' index'に変更しました。また、あなたの 'formresult 'にあるコードをインデックスページに貼り付けました。しかし、それは表示されません。常にNo Dataと表示されます。 – Illep

+0

@Ilelepインデックスにデータを表示する場合は、インデックスページにデータをポストする必要があります。したがって、フォームアクションを ''/''に変更し、' 'app.post('/test/about '、..' '' app.post('/'、.. ')に変更してください。フォームデータも – agit

+0

'index.jade'ページにどのように表示するのですか?'#{title} 'はうまくいきませんでした。 – Illep

関連する問題