JSON PHP
- Vorherige Seite JSON Server
- Nächste Seite JSON HTML
JSON的常规用途是从web服务器读取数据,然后在网页中显示这些数据。
本章向您讲解如何在客户端与PHP服务器之间交换JSON数据。
PHP-Datei
PHP提供处理JSON的内建函数。
通过使用PHP函数 json_encode()
,PHP中的对象可转换为JSON:
PHP-Datei
<?php $myObj->name = "Bill Gates"; $myObj->age = 62; $myObj->city = "Seattle"; $myJSON = json_encode($myObj); echo $myJSON; ?>
Clientseitiges JavaScript
Dies ist JavaScript auf dem Client, das AJAX-Aufrufe verwendet, um den PHP-Datei aus dem obigen Beispiel anzufordern:
Beispiel
Verwenden JSON.parse()
Konvertieren Sie die Ergebnisse in JavaScript-Objekt:
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
Beim Verwenden der PHP-Funktion json_encode()
wird auch das Array in PHP in JSON konvertiert:
PHP-Datei
<?php $myArr = array("Bill Gates", "Steve Jobs", "Elon Musk"); $myJSON = json_encode($myArr); echo $myJSON; ?>
Clientseitiges JavaScript
Dies ist JavaScript auf dem Client, das AJAX-Aufrufe verwendet, um den PHP-Datei aus dem obigen Beispiel anzufordern:
Beispiel
Verwenden Sie JSON.parse()
Konvertieren Sie die Ergebnisse in 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 Datenbank
PHP ist eine Server-Sprache für Serverseitige Programmierung und sollte für Operationen verwendet werden, die nur vom Server ausgeführt werden können, wie z.B. Datenbankzugriff.
Stellen Sie sich vor, es gibt eine Datenbank auf dem Server, die Daten von Kunden, Produkten und Lieferanten enthält.
In diesem Moment müssen Sie den Server anfordern, um die ersten zehn Einträge im "Kunden"-Tabellen zu erhalten:
Beispiel
Verwenden Sie JSON.stringify()
Konvertieren Sie JavaScript-Objekte in 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();
Beispiel erläutert:
- Definieren Sie ein Objekt, das die Attribute 'table' und 'limit' enthält.
- Konvertieren Sie dieses Objekt in eine JSON-Zeichenfolge.
- Senden Sie eine Anfrage an diese PHP-Datei, bei der JSON als Parameter verwendet wird.
- Warten Sie, bis die Anfrage das Ergebnis zurückgibt (als JSON).
- Zeigen Sie das Ergebnis an, das vom PHP-Datei erhalten wird.
Betrachten Sie die PHP-Datei
PHP-Datei
<?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-Datei Erklärung:
- Konvertieren Sie die Anfrage in ein Objekt, verwenden Sie die PHP-Funktion
json_decode()
. - Zugriff auf die Datenbank, füllen Sie das Array mit den angeforderten Daten.
- Fügen Sie das Array zum Objekt hinzu, verwenden Sie
json_encode()
Die Funktion gibt das Objekt als JSON zurück.
Durchsuchen Sie das Ergebnis
Konvertieren Sie das Ergebnis, das vom PHP-Datei erhalten wird, in ein JavaScript-Objekt oder, wie im Beispiel, ein JavaScript-Array:
Beispiel
Verwenden JSON.parse()
Konvertieren Sie JSON in ein JavaScript-Objekt:
... 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
Bei der Übermittlung von Daten an den Server ist es in der Regel am besten, das HTTP POST-Verfahren zu verwenden.
Um AJAX-Anfragen mit dem POST-Verfahren zu senden, geben Sie dieses Verfahren und die richtigen Header an.
Die Daten, die an den Server gesendet werden, müssen jetzt sein .send();
Methodenparameter:
Beispiel
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);
Der einzige Unterschied in der PHP-Datei ist die Methode, um die übertragenen Daten zu erhalten.
PHP-Datei
Verwenden $_POST
statt $_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); ?>
- Vorherige Seite JSON Server
- Nächste Seite JSON HTML