質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

解決済

1回答

6080閲覧

expressでのpostアクセスにおける値の受け取りについて

sakas1231

総合スコア42

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

1クリップ

投稿2018/02/11 10:15

Expressをやっていて、クライアント側からデータを受け取る時の動作がよくわかりません。

localhost:3000/に入力フォームがあり、隣のボタンクリックでpostメソッドにアクセスするごく簡単なものを作成したのですが、一番目のコードでは処理が止まってしまい(postは出力されるものの、dataとendが実行されない)二番目のコードではうまくいきました。

同じ、データを受け取ってクライアントに投げる処理なのに、なぜ一番目のコードではうまく動かないのでしょうか?

よろしくお願いします。

javascript

1router.post("/post", (req, res, next) => { 2 console.log("post"); 3 4 req.on('data', (data) => { 5 console.log("data"); 6 body += data; 7 }); 8 9 req.on("end", () => { 10 console.log("end"); 11 var post_data = qs.parse(body); 12 msg = "あなたは" + post_data.msg + "と書きました。"; 13 var data = { 14 title: "others", 15 msg: msg 16 }; 17 18 res.render("others", data) 19 }); 20});

javascript

1router.post("/post", (req, res, next) => { 2 console.log("post"); 3 msg = req.body["msg"]; 4 var data = { 5 title: "others", 6 msg: msg 7 }; 8 9 res.render("others", data) 10});

html

1<form method = "post" action = "/others/post"> 2 <p> 3 <input type = "text" name = "msg" > 4 <input type = "submit" value = "Click" > 5 </p> 6</form>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

そもそもExpressの仕様として、requestオブジェクトにreq.on無いと思いますが。
どこか別サイト等でその様に記載されているコードがあったのしょうか?

公式ドキュメントを改めて見ましたが、2番めに記載頂いたコードが一般的だと思いますが。
http://expressjs.com/en/4x/api.html#req.body

var app = require('express')(); var bodyParser = require('body-parser'); var multer = require('multer'); // v1.0.5 var upload = multer(); // for parsing multipart/form-data app.use(bodyParser.json()); // for parsing application/json app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded app.post('/profile', upload.array(), function (req, res, next) { console.log(req.body); res.json(req.body); });

投稿2018/03/19 02:55

iarik

総合スコア101

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問