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

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

新規登録して質問してみよう
ただいま回答率
85.48%
EJS

EJSは、JavaScript用のテンプレートエンジン。HTMLなどのテンプレートテキストにJavaScriptのロジックを記述することができます。また、変数・関数の実行をテンプレートテキスト内に埋め込むことも可能です。

Node.js

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

5514閲覧

POST送信でnullが入ってしまう。

退会済みユーザー

退会済みユーザー

総合スコア0

EJS

EJSは、JavaScript用のテンプレートエンジン。HTMLなどのテンプレートテキストにJavaScriptのロジックを記述することができます。また、変数・関数の実行をテンプレートテキスト内に埋め込むことも可能です。

Node.js

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2018/07/29 05:55

編集2018/07/29 07:39

前提・実現したいこと

POST送信でnullが入ってしまいます。
何故、nullが入ってしまうのでしょうか?
対処法のご教示をお願い致します。

該当のソースコード

javascript

1var http = require('http'); 2fs = require('fs'); 3ejs = require('ejs'); 4qs = require('querystring'); 5var settings = require('./settings'); 6var server = http.createServer(); 7var template = fs.readFileSync(__dirname + '/public_html/bbs.ejs', 'utf-8'); 8var posts = []; 9function renderForm(posts, res){ 10 var data = ejs.render(template, { 11 posts:posts 12 }); 13 res.writeHead(200, {'Content-Type': 'text/html'}); 14 res.write(data); 15 res.end(); 16} 17server.on('request', function(req, res) { 18 if (req.url === '/favicon.ico') { 19 return; 20 } 21 if(req.method == 'POST'){ 22 req.data = ""; 23 req.on("readable", function(){ 24 req.data += req.read(); 25 }); 26 req.on("end", function(){ 27 var query = qs.parse(req.data); 28 posts.push(query.name); 29 renderForm(posts, res); 30 }); 31 }else { 32 renderForm(posts, res); 33 } 34}); 35server.listen(settings.port, settings.host); 36console.log("server listening ...");

ejs

1<html lang="ja"> 2<head> 3 <title>BBS</title> 4 <meta charset="utf-8"> 5</head> 6<body> 7 <form method="post"> 8 <input type="text" name="name"> 9 <input type="submit" value="Post!"> 10 <ul> 11 <% for (var i = 0; i < posts.length; i++ ) { %> 12 <li><%= posts[i] %></li> 13 <% } %> 14 </ul> 15</body> 16</html>

※Chromeで実行すると一度に2回読み込まれてしまうので、下記で対処しています。

javascript

1 if (req.url === '/favicon.ico') { 2 return; 3 }

実行して、テキストボックスに値を入力して(例えば「test」と入力して)、送信ボタンをクリックすると、
testnullと出力されてしまいます。
なぜ、nullが付随してくるのでしょうか?
対処法のご教示をお願い致します。

補足情報(FW/ツールのバージョンなど)

Node.js ejs

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

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

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

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

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

guest

回答1

0

情報を取得する場合は'data'イベントを追加します。

js

1... 2 if (req.method == 'POST') { 3 req.data = ""; 4 req.on("data", function(chunk) { // 'data'イベント 5 req.data += chunk; 6 }); 7 req.on("end", function() { 8 var query = qs.parse(req.data); 9 posts.push(query.name); 10 renderForm(posts, res); 11 }); 12 } else { 13 renderForm(posts, res); 14 } 15...

投稿2018/07/31 16:40

ones

総合スコア85

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問