| title | フォーム |
|---|
import CodeBlock from '@theme/CodeBlock'; import Term from "@site/src/components/Term"; import OpenInCodeSandbox from "@site/src/components/OpenInCodeSandbox";
クエリパラメータとは?
入力した内容によって、次に移る(表示される)ページが異なるウェブページがあるが、入力した内容によって異なるウェブページが表示されるよう、入力した内容が移った先のページのURLに反映されている。URLのうち、入力した内容が反映されている部分をクエリパラメータという。
例:google.comで、検索エンジンに何か入力して、検索すると、検索結果が表示されるが、そのページのURLに注目。(下画像赤線がクエリパラメータ)

URLの末尾に ?key1=value1&key2=value2&... の形式でクエリパラメータを記載できる。
expressでは request.query オブジェクトに格納される。
const express = require("express");
const app = express();
app.get("/", (request, response) => {
response.send(JSON.stringify(request.query));
});
app.listen(3000);:::tip JSON.stringifyメソッド
JSON.stringifyメソッドはオブジェクトをJSON形式の文字列に変換するメソッド。
:::
:::tip URLとして使用できない文字の対処方法
URLとして使用できない文字(日本語文字など)はURLエンコードする必要がある。JavaScriptなら encodeURIComponent 関数で変換できる。
encodeURIComponent("日本語") // "%E6%97%A5%E6%9C%AC%E8%AA%9E":::
form要素を使うとユーザーの入力からクエリパラメータを生成してページ遷移できる。
- formのaction属性: フォーム送信時に移動し、データを送信するページ
- input要素: テキストボックス
- inputのname属性: クエリパラメータのキー
- button要素: form内のボタンをクリックするとformのactionに指定したページに遷移する(送信ボタンになる)
以下のコードの、htmlファイル(staticディレクトリ内に作る)と、jsファイルを作成し、実行してみよう。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<title>フォーム</title>
</head>
<body>
<form action="/send">
<input name="name" />
<input name="age" />
<button>送信</button>
</form>
</body>
</html>const express = require("express");
const app = express();
app.use(express.static("static"));
app.get("/send", (request, response) => {
response.send(
`あなたの名前は${request.query.name}で、${request.query.age}歳ですね。`
);
});
app.listen(3000);上記コードを実行すると、以下のような画面がブラウザに表示される。

http://localhost/3000/sendに移り、以下のような画面が表示される。


