PHP JSON

Zwykłe zastosowanie JSON to odczytywanie danych z serwera internetowego i wyświetlanie ich na stronie internetowej.

W tym rozdziale omówimy, jak wymieniać dane JSON między klientem a serwerem PHP.

pliku PHP

PHP oferuje wbudowane funkcje do obsługi JSON.

Przy użyciu funkcji PHP json_encode()Obiekty w PHP mogą być przekształcane na JSON:

pliku PHP

<?php
$myObj->nazwa = "Bill Gates";
$myObj->wiek = 62;
$myObj->city = "Seattle";
$myJSON = json_encode($myObj);
echo $myJSON;
?>

Wyświetl plik PHP

JavaScript klienta

To jest JavaScript klienta na serwerze, który używa wywołań AJAX do żądania PHP pliku z poprzedniego przykładu:

Przykład

używanie JSON.parse() Przekształć wynik w obiekt 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();

Spróbuj sam

PHP tablica

Podczas użycia funkcji PHP json_encode() W tym przypadku, tablica w PHP zostanie również przekształcona w JSON:

pliku PHP

<?php
$myArr = array("Bill Gates", "Steve Jobs", "Elon Musk");
$myJSON = json_encode($myArr);
echo $myJSON;
?>

Wyświetl plik PHP

JavaScript klienta

To jest JavaScript klienta na serwerze, który używa wywołań AJAX do żądania PHP pliku z poprzedniego przykładu:

Przykład

Użyj JSON.parse() Przekształć wynik w tablicę 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();

Spróbuj sam

PHP baza danych

PHP jest językiem programowania serwerowego, który powinien być używany do operacji wykonywanych tylko przez serwer, takich jak dostęp do bazy danych.

Wyobraź sobie, że na serwerze znajduje się baza danych, zawierająca dane klientów, produktów i dostawców.

W tym momencie musisz poprosić serwer o uzyskanie pierwszych dziesięciu rekordów z tabeli "Klient":

Przykład

Użyj JSON.stringify() Przekształć obiekt JavaScript na 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();

Spróbuj sam

Przykład wyjaśnienia:

  • Zdefiniuj obiekt zawierający atrybuty table i limit.
  • Przekształć ten obiekt na ciąg JSON.
  • Wysyłaj żądanie do tego pliku PHP, gdzie JSON jest parametrem.
  • Czekaj, aż żądanie zwróci wynik (jako JSON).
  • Wyświetl wynik otrzymany z pliku PHP.

Zobacz plik PHP

pliku 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);
?>

Wyjaśnienie pliku PHP:

  • Przekształć żądanie na obiekt, używając funkcji PHP json_decode().
  • Dostęp do bazy danych, wypełnij tablicę danymi żądanymi.
  • Dodaj tablicę do obiektu, używając json_encode() Funkcja zwraca obiekt jako JSON.

Przejdź przez wynik

Przekształć wynik otrzymany z pliku PHP na obiekt JavaScript, lub w tym przypadku, tablicę JavaScript:

Przykład

używanie JSON.parse() Przekształć JSON na obiekt 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;
    });
});
 ...

Spróbuj sam

Metoda PHP = POST

Podczas wysyłania danych do serwera, lepiej jest zazwyczaj używać metody HTTP POST.

Aby użyć metody POST do wysyłania żądań AJAX, należy określić tę metodę i poprawne nagłówki.

Dane wysyłane do serwera muszą teraz być .send(); Parametry metody:

Przykład

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);

Spróbuj sam

Jedyną różnicą w pliku PHP jest sposób uzyskiwania przesyłanych danych.

pliku PHP

używanie $_POST zamiast $_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);
?>