WebAPI①では、JSONからの返し値は、通常の配列でしたが、今回は、多次元配列で値を返します。
これにより、データベースからの複数レコードを取得することが可能になります。
機能概要
プログラミングコード
「webapi-news_v2.html」フロントエンド:API読み出しページ
- 6行目:「外部jqueryファイル」を読み込み、jQueryが使用できるようにします。(今回の仕組みは、jQueryライブラリを活用しています)
- 8~22行目:「javascript」の関数「mj_api()」を作成します。
- 9行目:phpのAPIのリンクを変数「url」に登録します。
- 11行目:JSONファイルから値を受け取ります。
- 12行目:「disp_text」の中を初期化します。
- 14~20行目:配列「data」の数だけループさせます。また、「divタグ」の「disp_text」にinnerHTMLを利用して画面上に出力します。
- 25行目:イベント「onload」は、画面をロードした時を意味します。今回は、ロード時に「mj_api()」を実行します。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>sample</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script language="javascript" type="text/javascript">
function mj_api(){
url = "webapi-news_v2.php";
$.getJSON(url, (data) => {
disp_text.innerHTML = "";
for (let i=0; i<data.length; i++){
disp_text.innerHTML += "status:" + data[i]["status"] + "<br>";
disp_text.innerHTML += "new_no:" + data[i]["new_no"] + "<br>";
disp_text.innerHTML += "title_kj:" + data[i]["title_kj"] + "<br>";
disp_text.innerHTML += "article_kj:" + data[i]["article_kj"] + "<br>";
disp_text.innerHTML += "<hr>";
}
});
}
</script>
</head>
<body onload="mj_api()">
<div>ニュース情報を取得<br></div>
<div id="disp_text"></div>
</body>
</html>
「webapi-news_v2.php」バックエンド:APIファイル
- 2行目:配列「$arr_data」を配列として宣言します。
- 3~16行目:配列「$arr_data」に値を入力します。
- 17行目:「header」関数を使用して、jsonファイルということが分かるようにヘッダーを登録します。
- 18行目:「json_encode()」を用いて、配列をJSONファイルに変換します。
<?php
$arr_data = array();
$arr_data = [
[
"status" => "OK"
,"new_no" => "1"
,"title_kj" => "1:ここにタイトルが入ります。"
,"article_kj" => "1:ここに本文が入ります。"
],
[
"status" => "OK"
,"new_no" => "2"
,"title_kj" => "2:ここにタイトルが入ります。"
,"article_kj" => "2:ここに本文が入ります。"
]
];
header('content-type: application/json; charset=utf-8');
echo json_encode($arr_data);
?>
演習問題
- 上記のコードを使用して、ファイル作成し、動作するようにしてみよう。
- 上記のプログラムにデータベース接続し、ニュース一覧などを取得できるようにしてみよう。