この記事はだいたい 4 分ほどで読めます。
jQueryで非同期通信を行い画面の表示をしてみました。
確認した環境
- OS Windows10
- XAMPP ver.7.4.6
目次
仕様
マウスカーソルを[姓]または[名]に合わせた時に、DBから非同期処理でデータを取得して表示する。
姓をマウスオーバーしたら姓が表示され、名の時は名前を表示するようにします。
こんな感じのものを作ってみます。
コーディング
html
任意の場所にhtmlファイル作って保存します。
<!DOCTYPE html> <html lang="jp"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body></body> </html>
bodyにタグを配置していきます。
文字の表示をするところと、切り替えをするところをそれぞれ配置します。
<body> <div id="text"> <p id="name"> こちらは初期画面です。 </p> </div> <div class="box" id="last"> 姓 </div> <div class="box" id="first"> 名 </div> </body>
確認してみます。
先ほど配置したものが表示されました。
このままだと見づらいのでCSSを適用します。
CSS
htmlファイルと同じフォルダ内にcssファイルを保存します。
* { margin : 0; padding: 0; } div { margin : 3px; padding : 3px; border : 1px solid; width : 200px; border-radius: 4px; } .box { color : whitesmoke; background-color: blue; margin : 3px; padding : 3px; width : 30px; height : 30px; float : left; text-align : center; } .box:hover { cursor : pointer; color : gray; background-color: skyblue; }
divタグのサイズと色を設定して位置も調整しています。
ホバーの処理も記述しています。
このファイルを読み込むようにhtmlファイルを修正します。
<title>Document</title> <link rel="stylesheet" href="style.css" />
ファイルを保存して確認してみます。
反映されました。
divタグに色がついた状態で表示されています。
姓がホバーされた状態になっています。
次にデータを取得する処理を作成します。
PHP
htmlファイルと同じフォルダに次のphpファイルを保存します。
<?php $conn = mysqli_connect("localhost", "root", "", "testdb"); //1行データ取得 $sql = "SELECT * FROM users LIMIT 1"; $ret = mysqli_query($conn, $sql); if (mysqli_num_rows($ret) > 0) { while ($rows = mysqli_fetch_assoc($ret)) { if ($_GET['name'] == 1) { echo $rows['user_first']; } else { echo $rows['user_last']; } } } else { echo '取得失敗'; } mysqli_close($conn);
SELECT文を発行してデータを1行取得して、取得したデータを出力しています。
表示する値をGETされたパラメータで切り替えています。
では、jQuery部分を記述します。
htmlファイルのヘッダにスクリプトを追加します。
jQuery
<link rel="stylesheet" href="style.css" /> <script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous" ></script> <!-- マウスオーバーの処理 --> <script> $(document).ready(function () { $("#first").mouseover(function () { $("#name").load("user.php?name=1"); }); $("#last").mouseover(function () { $("#name").load("user.php?name=2"); }); }); </script> </head>
divタグをマウスオーバーした時にphpファイルをloadするようにしました。
動かして確認してみます。
確認
[姓]をマウスオーバーした処理です。
表示が切り替わりました。
姓が表示されています。
続いて[名]をマウスオーバーした処理。
こちらもOKそうです。
名前が表示されました。
まとめ
非同期処理を試してみました。
今回分かったことはjQueryを使うには HTML,CSS,JavaScriptの理解が必要ということです。
私にはちょっとハードルが高い気がしました。
おわり。