JSON PHP

Η κανονική χρήση του JSON είναι η ανάγνωση δεδομένων από τον διακομιστή του ιστότοπου και η εμφάνισή τους στην ιστοσελίδα.

Αυτό το κεφάλαιο σας εξηγεί πώς να ανταλλάσσετε δεδομένα JSON μεταξύ πελάτη και διακομιστή PHP.

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

Εμφάνιση αρχείου PHP

JavaScript πελάτη

Αυτό είναι το JavaScript του πελάτη, το οποίο χρησιμοποιεί κλήσεις AJAX για να ζητήσει το αρχείο 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

Κατά τη χρήση της συνάρτησης json_encode() στοιχειώσει, η λίστα του PHP θα μετατραπεί επίσης σε JSON:

PHP αρχείο

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

Εμφάνιση αρχείου PHP

JavaScript πελάτη

Αυτό είναι το JavaScript του πελάτη, το οποίο χρησιμοποιεί κλήσεις AJAX για να ζητήσει το αρχείο 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 είναι γλώσσα προγραμματισμού για τον server, πρέπει να χρησιμοποιείται για λειτουργίες που μπορούν να εκτελεστούν μόνο από τον server, όπως η πρόσβαση στη βάση δεδομένων.

Παρατηρήστε ότι στον server υπάρχει μια βάση δεδομένων που περιέχει δεδομένα πελατών, προϊόντων και προμηθευτών.

Σε αυτό το σημείο, πρέπει να ζητήσετε από τον服务器 να αποκτήσετε τα πρώτα δέκα εγγραφές από την τάβλη "Πελάτες":

παράδειγμα

Χρησιμοποιήστε 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.
  • Αποστείλετε αίτημα στον αρχείο PHP, όπου το JSON είναι ο παράμετρος.
  • Αναμονή μέχρι να επιστρέψει το αίτημα (ως 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 για να στείλετε δεδομένα στο server.

Για να χρησιμοποιήσετε τη μέθοδο POST για να στείλετε αιτήματα AJAX, πρέπει να καθορίσετε τη μέθοδο αυτή και το σωστό κεφαλίδι.

Τώρα τα δεδομένα που αποστέλλονται στο server πρέπει να είναι .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);
?>