■ はじめに
https://dk521123.hatenablog.com/entry/2018/06/05/211900
https://dk521123.hatenablog.com/entry/2018/06/06/191400
の続き。 今回は、ファームデータを処理する。
■ サンプル
bbs.ejs
<!doctype html> <html lang"ja"> <head> <meta charset="utf-8"> </head> <body> <form method="post"> <input type="text" name="bbsContent"> <input type="submit" value="Click me!"> </form> <ul> <% for (var i = 0; i < bbsPosts.length; i++) { %> <li><%= bbsPosts[i] %></li> <% } %> </ul> </body> </html>
settings.js
exports.port='18080'; exports.host='127.0.0.1';
server.js
// HTTPモ/File System/EJS(テンプレート)/Query String(Form処理)ジュールを呼び出す var http = require('http'), fileSystem = require('fs'), ejs = require('ejs'), queryString = require('querystring'); // 外部ファイルから取得 var settings = require('./settings.js'); var server = http.createServer(); var template = fileSystem.readFileSync(__dirname + '/bbs.ejs', 'utf-8'); var bbsPosts = []; function renderForm(request, response) { var data = ejs.render(template, { bbsPosts: bbsPosts }); response.writeHead(200, {'Content-Type': 'text/html'}); response.write(data); response.end(); } server.on('request', function(request, response) { if (request.method == 'POST') { request.data = ""; request.on("data", function(chunk) { var readData = chunk; console.log("Read Data : " + readData); request.data += readData; }); request.on("end", function() { var query = queryString.parse(request.data); console.log("BBS Content : " + query.bbsContent); bbsPosts.push(query.bbsContent); renderForm(bbsPosts, response); }); } else { renderForm(request, response); } }); server.listen(settings.port, settings.host); console.log("Server listening...");
関連記事
Node.js ~ 基礎知識 / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2018/06/05/211900