JSON PHP
- Vorige Pagina JSON Servers
- Volgende Pagina JSON HTML
JSON の一般的な用途は、ウェブサーバーからデータを読み取り、それをウェブページで表示することです。
この章では、クライアントと PHP サーバー間で JSON データを交換する方法について説明します。
PHP Bestand
PHP は JSON を処理する内蔵関数を提供します。
PHP 関数を使用して json_encode()
,PHP 中のオブジェクトは JSON に変換できます:
PHP Bestand
<?php $myObj->name = "Bill Gates"; $myObj->age = 62; $myObj->city = "Seattle"; $myJSON = json_encode($myObj); echo $myJSON; ?>
Client-side JavaScript
Dit is JavaScript op de client-side, dat gebruik maakt van AJAX-aanroepen om de PHP-bestanden in het voorbeeld aan te roepen:
Voorbeeld
Gebruik JSON.parse()
Converteer het resultaat naar een JavaScript-object:
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-array
Bij het gebruik van de PHP-functie json_encode()
wanneer, de array in PHP wordt ook geconverteerd naar JSON:
PHP Bestand
<?php $myArr = array("Bill Gates", "Steve Jobs", "Elon Musk"); $myJSON = json_encode($myArr); echo $myJSON; ?>
Client-side JavaScript
Dit is JavaScript op de client-side, dat gebruik maakt van AJAX-aanroepen om de PHP-bestanden in het voorbeeld aan te roepen:
Voorbeeld
Gebruik JSON.parse()
Converteer het resultaat naar een JavaScript-array:
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-database
PHP is een server-side programmeertaal en moet worden gebruikt voor operaties die alleen door de server kunnen worden uitgevoerd, zoals toegang tot databases.
Denk aan een database op de server die klant-, product- en leveranciersgegevens bevat.
Op dit moment moet je de server verzoeken om de eerste tien records van de 'klant'-tabel te verkrijgen:
Voorbeeld
Gebruik JSON.stringify()
Converteer een JavaScript-object naar 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();
Voorbeeldverklaring:
- Definieer een object dat de eigenschappen 'table' en 'limit' bevat.
- Converteer dit object naar een JSON-string.
- Verstuur een verzoek naar dit PHP-bestand, waarbij JSON als parameter wordt verstrekt.
- Wacht tot het verzoek een resultaat retourneert (als JSON).
- Toon de resultaten die worden ontvangen van het PHP-bestand.
Bekijk het PHP-bestand
PHP Bestand
<?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-bestand uitleg:
- Converteer de verzoek naar een object, gebruikmakend van de PHP-functie
json_decode()
. - Toegang tot de database, vul het array met de verzochte gegevens.
- Voeg het array toe aan het object met behulp van
json_encode()
De functie retourneert het object als JSON.
Doorloop de resultaten
Converteer de resultaten die van een PHP-bestand worden ontvangen naar een JavaScript-object, of in dit voorbeeld, een JavaScript-array:
Voorbeeld
Gebruik JSON.parse()
Converteer JSON naar een JavaScript-object:
... 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-methode = POST
Bij het verzenden van gegevens naar de server is het meestal het beste om de HTTP POST-methode te gebruiken.
Om een AJAX-verzoek met de POST-methode te verzenden, specificeer dan deze methode en de juiste headers.
De gegevens die naar de server worden gestuurd moeten nu zijn .send();
Parameters van de methode:
Voorbeeld
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);
De enige verschil in het PHP-bestand is de manier waarop de overgebrachte gegevens worden verkregen.
PHP Bestand
Gebruik $_POST
in plaats van $_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); ?>
- Vorige Pagina JSON Servers
- Volgende Pagina JSON HTML