JSON PHP
JSONの一般的な用途は、ウェブサーバーからデータを読み取り、それをウェブページで表示することです。
この章では、クライアントとPHPサーバー間でJSONデータを交換する方法について説明します。
PHP ファイル
PHPはJSONを処理する内蔵関数を提供します。
PHP関数を使用して json_encode()
、PHPにおけるオブジェクトはJSONに変換できます:
PHP ファイル
<?php $myObj->name = "Bill Gates"; $myObj->age = 62; $myObj->city = "Seattle"; $myJSON = json_encode($myObj); echo $myJSON; ?>
クライアント側JavaScript
これはクライアント側のJavaScriptで、AJPX呼び出しを使用して上記のPHPファイルをリクエストするものです:
例
使用 JSON.parse()
結果をJavaScriptオブジェクトに変換します:
var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myObj = JSON.parse(this.responseText); document.getElementById("demo").innerHTML = myObj.name; }); }); xmlhttp.open("GET", "demo_file.php", true); xmlhttp.send();
PHP配列
PHP関数を使用する際に、 json_encode()
の場合、PHPの配列もJSONに変換されます:
PHP ファイル
<?php $myArr = array("Bill Gates", "Steve Jobs", "Elon Musk"); $myJSON = json_encode($myArr); echo $myJSON; ?>
クライアント側JavaScript
これはクライアント側のJavaScriptで、AJPX呼び出しを使用して上記のPHPファイルをリクエストするものです:
例
使用してください JSON.parse()
結果をJavaScript配列に変換します:
var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myObj = JSON.parse(this.responseText); document.getElementById("demo").innerHTML = myObj[2]; }); }); xmlhttp.open("GET", "demo_file_array.php", true); xmlhttp.send();
PHPデータベース
PHPはサーバーサイドのプログラミング言語であり、データベースへのアクセスなどのサーバー側でのみ実行される操作に使用されるべきです。
サーバー上に、顧客、製品、サプライヤーのデータを含むデータベースがあると想像してみてください。
この時点で、あなたは「顧客」テーブルの前10件のレコードを取得するためにサーバーをリクエストする必要があります:
例
使用してください JSON.stringify()
JavaScriptオブジェクトをJSONに変換します:
obj = { "table":"customers", "limit":10 }; dbParam = JSON.stringify(obj); xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("demo").innerHTML = this.responseText; }); }); xmlhttp.open("GET", "demo_json_db.php?x=" + dbParam, true); xmlhttp.send();
例説明:
- table属性とlimit属性を含むオブジェクトを定義します。
- このオブジェクトをJSON文字列に変換します。
- JSONとしてパラメータを含むこのPHPファイルにリクエストを送信します。
- リクエストが返信されるまで待ちます(JSONとして)。
- PHPファイルから受け取った結果を表示します。
PHPファイルを確認してください。
PHP ファイル
<?php header("Content-Type: application/json; charset=UTF-8"); $obj = json_decode($_GET["x"], false); $conn = new mysqli("myServer", "myUser", "myPassword", "Northwind"); $result = $conn->query("SELECT name FROM ".$obj->$table." LIMIT ".$obj->$limit); $outp = array(); $outp = $result->fetch_all(MYSQLI_ASSOC); echo json_encode($outp); ?>
PHPファイルの説明:
- PHP関数を使用してリクエストをオブジェクトに変換します。
json_decode()
. - データベースにアクセスし、リクエストされたデータで配列を埋めます。
- 配列をオブジェクトに追加するために、
json_encode()
オブジェクトをJSONで返します。
結果を巡回します
PHPファイルから受け取った結果をJavaScriptオブジェクトに変換します、またはこの例ではJavaScript配列:
例
使用 JSON.parse()
JSONをJavaScriptオブジェクトに変換します:
... xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myObj = JSON.parse(this.responseText); for (x in myObj) { txt += myObj[x].name + "<br>"; }); document.getElementById("demo").innerHTML = txt; }); }); ...
PHPメソッド = POST
データをサーバーに送信する際には、HTTP POSTメソッドが一般的に最適です。
POSTメソッドを使用してAJAXリクエストを送信する場合、そのメソッドと正しいヘッダーを指定してください。
サーバーにデータを送信する際には、通常HTTP POSTメソッドを使用するのが良いです。 .send();
方法の引数:
例
obj = { "table":"customers", "limit":10 }; dbParam = JSON.stringify(obj); xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myObj = JSON.parse(this.responseText); for (x in myObj) { txt += myObj[x].name + "<br>"; }); document.getElementById("demo").innerHTML = txt; }); }); xmlhttp.open("POST", "demo_json_db.php", true); xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlhttp.send("x=" + dbParam);
PHP ファイルでの唯一の違いは、送信されたデータを取得する方法です。
PHP ファイル
使用 $_POST
ではなく $_GET
:
<?php header("Content-Type: application/json; charset=UTF-8"); $obj = json_decode($_POST["x"], false); $conn = new mysqli("myServer", "myUser", "myPassword", "Northwind"); $result = $conn->query("SELECT name FROM ".$obj->$table." LIMIT ".$obj->$limit); $outp = array(); $outp = $result->fetch_all(MYSQLI_ASSOC); echo json_encode($outp); ?>