PHPでAPIを作成しJavaScript(jQuery無し)からリクエストする方法
管理画面等から何らかのデータをMySQLに登録し、そのデータをPHPで作成したAPIでJSON形式にて出力させたい。また、そのAPIにはJavaScript(jQuery無し)でリクエストし、戻り値によって処理を分岐させたい。以下に方法をメモ。
PHP側
管理画面等からMySQLにデータを登録したり、MySQLからデータをひっぱってくるのは普段から行う手順なので今回は無し。
識別子(uid)があれば「識別子・リクエスト日時・ステータス(true)」を返し、なければ「ステータス(false)」をJSON形式で返す簡単なAPIを作成する。以下ソースコード。
<?php $respons['status'] = false; if( $_GET['uid'] ){ $respons['uid'] = $_GET['uid']; $respons['date'] = date('Y-m-d H:i:s'); $respons['status'] = true; } header("Access-Control-Allow-Origin: *"); echo json_encode($respons);
JavaScript側
<script> const request = new XMLHttpRequest(); request.open('GET', 'http://test.com/api.php?uid=1', true); //URLは適宜変更する request.onload = function () { const data = this.response; const json = JSON.parse(data); //API側で正常に処理されている場合 if( json.status ){ console.log(json); //Object { status: true, uid: "1", date: "2021-03-19 19:19:20" } //API側でエラーが発生した場合 }else{ } }; request.send(); </script>
所感
今回はMySQL関連の処理を省いたが、実際に導入する際は「識別子が数値かどうか」等のチェックを入念に行う必要がありそう。
また、API側のエラー時に原因究明をしやすいよう、エラーコードも返す方が良さそう。
関連記事
-
-
日付入力のテキストフォームにカレンダープラグインを導入
やりたかった事と制限は下記の通り。 ・日付入力のテキストフォームにカレンダープラ ...
-
-
Leafletにて操作内容を履歴に残し「進む」「戻る」ボタンで履歴を実行できる「Leaflet.NavBar」の利用方法
Leafletにてマップ移動やズーム等、ユーザーの操作内容を履歴に残して、「進む ...
-
-
バニラJavaScript対応の日時ピッカー「Flatpickr」ライブラリの利用方法
サイト内に日時ピッカーを実装する場合、jQueryの「DateTimePicke ...
-
-
JavaScriptで後から追加した要素にイベントを割り当てる方法と挙動の違いについて
jQueryで後から追加した要素に対してイベントを割り当てる場合、いつもと異なる ...
-
-
PHPで画像を分割し並べ替えて出力したものをJavaScriptで復元する方法
ある電子書籍サイトをブラウザの開発者ツールで見てみたところ、PHPでページ画像を ...