6

Expressを使用してPOSTデータをNode.JSサーバーに送信する単純なフォームがあります。これはフォームです:

<form method="post" action="/sendmessage">
  <div class="ui-widget">
      <input type="text" id="search" data-provide="typeahead" placeholder="Search..." />
  </div>
  <textarea id="message"></textarea>
</form>

ui-widgetと入力はtypehead、Twitterのオートコンプリートライブラリであると関連付けられています。そして、これは私がサーバーでPOSTリクエストを処理する方法です:

app.post('/sendmessage', function (req, res){

  console.log(req.body);

  usermodel.findOne({ user: req.session.user }, function (err, auser){

        if (err) throw err;

        usermodel.findOne({ user: req.body.search }, function (err, user){

            if (err) throw err;

             var message = new messagemodel({

                  fromuser: auser._id,
                  touser: user._id,
                  message: req.body.message,
                  status: false

             });

             message.save(function (err){

                  if (err) throw err;

                  res.redirect('/messages')

             })

        });

   });

});

コンソールに「{}」と表示され、定義されていないreq.body.searchため、エラーが表示されます。searchここで何が起こっているのかわかりませんが、typehead入力に関連する問題ではありません。この問題の解決策はありますか...?

よろしくお願いします!

4

5 に答える 5

22

req.body名前と値で構成されます。

検索ボックスに追加name="search"して、もう一度お試しください。

また、express/connect.bodyParser() ミドルウェアを使用する必要があります。Nick Mitchinson に感謝します。

于 2013-03-10T18:07:22.627 に答える
0

私の場合、フィールドにこのような名前タグを付けませんでしname="firstname"input。それらを追加した後、すべてが機能しました。

于 2020-04-20T15:48:31.060 に答える