ファイルのアップロードや FormData オブジェクトを使う場合は、$.ajax を使用しますが、簡単なデータの参照であればこれで十分ですし、PHP 側との連携のサンプルとして PHP の機能部分もいろいろ意味があります。 ブラウザ側
<!DOCTYPE html> <html> <head> <meta content="width=device-width initial-scale=1.0 minimum-scale=1.0 maximum-scale=1.0 user-scalable=no" name="viewport"> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.css" /> <script> $(function(){ $("#btn").on( "click", function(){ // TABLE データ部分のクリア $("#tbl").html(""); $.get({ url: "https://yourdomain.jp/test1.php", cache: false, data: { "scode" : $("#scode").val() } }) .done(function( data, textStatus ){ console.log( "status:" + textStatus ); //console.log( "data:" + JSON.stringify(data, null, " ") ); $.each( data, function( index, obj ){ console.log( obj.scode + " : " + obj.sname ) ; var row = $("<tr></tr>"); $( "<td></td>" ).text( obj.scode ).appendTo( row ); $( "<td></td>" ).text( obj.sname ).appendTo( row ); $( "<td></td>" ).text( obj.furi ).appendTo( row ); $( "<td></td>" ).text( obj.syozoku ).appendTo( row ); $( "<td></td>" ).text( obj.gender ).appendTo( row ); $( "<td></td>" ).text( obj.create ).appendTo( row ); $( "<td></td>" ).text( obj.update ).appendTo( row ); $( "<td></td>" ).text( obj.kyuyo ).appendTo( row ); $( "<td></td>" ).text( obj.teate ).appendTo( row ); $( "<td></td>" ).text( obj.boss ).appendTo( row ); $( "<td></td>" ).text( obj.birthday ).appendTo( row ); $( "#tbl" ).append( row ); }); }) .fail(function(jqXHR, textStatus, errorThrown ){ console.log( "status:" + textStatus ); }) .always(function() { //console.log("いつも通る"); }) ; }); }); </script> <style> td { white-space: nowrap; } </style> </head> <body> <input type="text" id="scode" style='width:60px;' value="0001" maxlength="4"> <input class="btn btn-primary mb-3 ml-3" id="btn" name="btn" type="button" value="実行"> <table class="table table-striped table-hover table-responsive"> <tbody id="tbl"> </tbody> </table> </body> </html>
$.get の cache: false は、内部で番号が QueryString に与えられます。確認はデベロッパーツールの Network で可能です。 done で php 側のエラー時の処理は未実装ですが、obj.status を typeof でチェック( "undefined" )すればいいでしょう bootstrap で容易にレスポンシブのテーブルが作成できます。bootstrap では、tbody が必要です。 サーバ側 ( test1.php ) / ロリポップ使用
<?php error_reporting( E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED ); session_cache_limiter('nocache'); session_start(); header( "Content-Type: application/json; charset=utf-8" ); header( "Access-Control-Allow-Origin: *" ); $dsn = 'mysql:host=mysql145.phy.lolipop.lan;dbname=LAA1234567-contactsphp'; $user = '1234567'; $password = "password"; try { // *************************** // 接続 // *************************** $dbh = new PDO($dsn, $user, $password); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { print '接続に失敗しました: ' . $e->getMessage(); exit; } $sql = <<<SQL select * from 社員マスタ where 社員コード <= ? SQL; try { $stmt = $dbh->prepare($sql); $stmt->bindValue(1, $_GET["scode"], PDO::PARAM_STR); $stmt->execute(); $json = []; while ($row = $stmt->fetch(PDO::FETCH_BOTH, PDO::FETCH_ORI_NEXT)) { $obj = new stdClass; $obj->scode = $row["社員コード"]; $obj->sname = $row["氏名"]; $obj->furi = $row["フリガナ"]; $obj->syozoku = $row["所属"]; $obj->gender = $row["性別"]; $obj->create = $row["作成日"]; $obj->update = $row["更新日"]; $obj->kyuyo = $row["給与"]; $obj->teate = $row["手当"]; $obj->boss = $row["管理者"]; $obj->birthday = $row["生年月日"]; $json[] = $obj; } print json_encode($json, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); // *************************** // ステートメントの解放 // *************************** $stmt = null; } catch (Exception $e) { print <<<ERRJSON { "status" : "error" } ERRJSON; } ?>
Content-Type: application/json によって、jQuery 側では受けたデータが JSON オブジェクトになります Access-Control-Allow-Origin: * によって、他のドメインからこの PHP を呼び出す事ができるようになります( そもそも、http から https は呼び出せませんが ) setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION) は接続より後の処理で try 〜 catch が使えるようにします json_encode では、テスト中は内容をチェックしやすいようにエスケープせずに整形してあります
|
【jQueryの最新記事】
- jquery.balloon.js を使用した簡単なバルーン( マウスオーバーで表示する追加説明用 )の作り方
- jQuery による link 要素の追加と削除を bootstrap.css でリアルタイムチェック
- FileReader で、ローカルの CSV を読み込んで(shift_jis)、jQuery でテーブルを作成して表示する
- jQuery + bootstrap.js で ajax の GET と POST を使用した DB テーブルを更新する UI テンプレート
- jQuery : 貼り付けるだけで、ページ右下にページ先頭にジャンプするリンクを表示させる( アニメーションは無し )
- STYLE 要素を追加して、CSS テキストをセットして、jQuery で CSS に important 指定を追加する。
- ページの右下に、ページの先頭へ移動するボタンを追加する(ページの先頭から 200px までは、スクロールボタンを表示しない)
- テーブルのTDをクリックしたら、INPUT で値を変更可能にして、元の値と違うものにはフラグを立てる処理を絵で書いて説明してみました
- jQuery を使用してサーバから取得した JSON データを元にテーブルを作成し、その後から列を加工する
- JSON 配列を WEB より読み出して jQuery で動的にテーブルを作成して表示する
- jQuery UI の Datepicker Widget のオプション
- FormData を使用して、jQuery で配列として PHP に送る
- 必要なデータを隠しリストボックス( multiple ) に jQuery で追加して配列として PHP に送る
- Android Studio の追加日本語化用に、キャラクタセットに依存しないコード文字列を作成するツールを作成しました
- 画像ファイルが存在した時のみ、表示する jQuery の記述
- jQuery で mobile(スマホ) かどうかのチェックをしたくて調べたら、Stack Overflow の記事でいろんな方法が答えられていました。
- jQuery と FileReader オブジェクトによる、ローカルの複数画像ファイルのプレビュー表示
- とても面白くて簡単な jQuery のクリックしたコンテンツ以外を暗転(Blackout) するサンプル
- jQuery で、左右に並んだリストボックスの右側のデーターをダブルクリックしたら左へ転送してソートする処理
- jQuery でコンボボックスの選択されたオプションのテキストを取得する場合、optgroup を使っている場合は子孫選択でないと取得されないというお話 / find(子孫) と children(直..