TECH I.S.

JSON PHP


JSONの一般的な用途は、Webサーバーからデータを読み取り、そのデータをWebページに表示することです。

この章では、クライアントとPHPサーバーの間でJSONデータを交換する方法を説明します。


PHPファイル

PHPには、JSONを処理する組み込み関数がいくつかあります。

PHPのオブジェクトは、PHP関数json_encode()を使用してJSONに変換できます。

PHPファイル

<?php $myObj->name = "John"; $myObj->age = 30; $myObj->city = "New York"; $myJSON = json_encode($myObj); echo $myJSON; ?>

PHPファイルを表示»

クライアントJavaScript

上記の例からAJAX呼び出しを使用してPHPファイルを要求する、クライアント上のJavaScriptを次に示します。

JSON.parse()を使用して、結果をJavaScript オブジェクトに変換します。

const xmlhttp = new XMLHttpRequest(); xmlhttp.onload = function() {   const myObj = JSON.parse(this.responseText);   document.getElementById("demo").innerHTML = myObj.name; } xmlhttp.open("GET", "demo_file.php"); xmlhttp.send();

自分で試してみる»


PHP配列

PHP関数json_encode()を使用すると、PHPの配列もJSONに変換されます。

PHPファイル

<?php $myArr = array("John", "Mary", "Peter", "Sally"); $myJSON = json_encode($myArr); echo $myJSON; ?>

PHPファイルを表示»

クライアントJavaScript

上記の配列の例からPHPファイルを要求するためにAJAX呼び出しを使用する、クライアント上のJavaScriptを次に示します。

JSON.parse()を使用して、結果をJavaScript 配列に変換します。

var xmlhttp = new XMLHttpRequest(); xmlhttp.onload = function() {   const myObj = JSON.parse(this.responseText);   document.getElementById("demo").innerHTML = myObj[2]; } xmlhttp.open("GET", "demo_file_array.php", true); xmlhttp.send();

自分で試してみる»


PHPデータベース

PHPはサーバー側のプログラミング言語であり、データベースへのアクセスに使用できます。

サーバー上にデータベースがあり、クライアントから"customers"というテーブルの最初の10行を要求するリクエストを送信したいとします。

クライアントで、返す行数を記述したJSONオブジェクトを作成します。

リクエストをサーバーに送信する前に、JSONオブジェクトを文字列に変換し、それをパラメーターとしてPHPページのURL に送信します。

JSON.stringify()を使用して、JavaScriptオブジェクトをJSONに変換します。

const limit = {"limit":10}; const dbParam = JSON.stringify(limit); xmlhttp = new XMLHttpRequest(); xmlhttp.onload = function() {   document.getElementById("demo").innerHTML = this.responseText; } xmlhttp.open("GET","json_demo_db.php?x=" + dbParam); xmlhttp.send();

自分で試してみる»

例の説明:

  • 「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"); $stmt = $conn->prepare("SELECT name FROM customers LIMIT ?"); $stmt->bind_param("s", $obj->limit); $stmt->execute(); $result = $stmt->get_result(); $outp = $result->fetch_all(MYSQLI_ASSOC); echo json_encode($outp); ?>

PHPファイルの説明:

  • PHP関数を使用して、リクエストをオブジェクトに変換します:::code {.techis-codespan}

    json_decode()

:::code .
  • データベースにアクセスし、配列に要求されたデータを入力します。
  • 配列をオブジェクトに追加し、次を使用してオブジェクトを JSONとして返します。の:::code {.techis-codespan}

    json_encode()

:::code 関数。

データの使用

xmlhttp.onload = function() {   const myObj = JSON.parse(this.responseText);   let text = "";   for (let x in myObj) {     text += myObj[x].name + "<br>";   }   document.getElementById("demo").innerHTML = text; }

自分で試してみる»


PHPメソッド = POST

サーバーにデータを送信する場合、多くの場合、HTTP POSTメソッドを使用するのが最適です。

このメソッドを使用してAJAXリクエストを送信するにはPOSTメソッドと正しいヘッダーを指定します。

サーバーに送信されるデータは、send()メソッドの引数である必要があります。

const dbParam = JSON.stringify({"limit":10}); const xmlhttp = new XMLHttpRequest(); xmlhttp.onload = function() {   const myObj = JSON.parse(this.responseText);   let text ="";   for (let x in myObj) {     text += myObj[x].name + "<br>";   }   document.getElementById("demo").innerHTML = text; } <strong>xmlhttp.open("POST", "json_demo_db_post.php"); </strong><strong>xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); </strong><strong>xmlhttp.send("x=" + dbParam);</strong>

自分で試してみる»

PHPファイルの唯一の違いは、転送されたデータを取得する方法です。

PHPファイル

$_GETの代わりに$_POSTを使用します。

<?php header("Content-Type: application/json; charset=UTF-8"); <strong>$obj = json_decode($_POST["x"], false); </strong> $conn = new mysqli("myServer", "myUser", "myPassword", "Northwind"); $stmt = $conn->prepare("SELECT name FROM customers LIMIT ?"); $stmt->bind_param("s", $obj->limit); $stmt->execute(); $result = $stmt->get_result(); $outp = $result->fetch_all(MYSQLI_ASSOC); echo json_encode($outp); ?>


プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細