09. JSON PHP

JSON PHP


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

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


Το αρχείο PHP

Η PHP έχει ορισμένες ενσωματωμένες λειτουργίες για να χειρίζεται το JSON.

Τα αντικείμενα στην PHP μπορούν να μετατραπούν σε JSON χρησιμοποιώντας τη λειτουργία PHP json_encode () :

Αρχείο PHP

1
2
3
4
5
6
7
8
9
<?php
$myObj->name = "John";
$myObj->age = 30;
$myObj->city = "New York";

$myJSON = json_encode($myObj);

echo $myJSON;
?>

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

Το JavaScript του προγράμματος-πελάτη

Εδώ είναι ένα JavaScript στον πελάτη, χρησιμοποιώντας μια κλήση AJAX για να ζητήσετε το αρχείο PHP από το παραπάνω παράδειγμα:

Παράδειγμα

Χρησιμοποιήστε το JSON.parse() για να μετατρέψετε το αποτέλεσμα σε ένα αντικείμενο JavaScript:

1
2
3
4
5
6
7
8
9
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    var myObj = JSON.parse(this.responseText);
    document.getElementById("demo").innerHTML = myObj.name;
  }
};
xmlhttp.open("GET", "demo_file.php", true);
xmlhttp.send();

Δοκιμάστε το »


PHP Array

Οι πίνακες στη PHP θα μετατραπούν επίσης σε JSON όταν χρησιμοποιείτε τη λειτουργία PHP json_encode() :

Αρχείο PHP

1
2
3
4
5
6
7
<?php
$myArr = array("John", "Mary", "Peter", "Sally");

$myJSON = json_encode($myArr);

echo $myJSON;
?>

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

Η JavaScript του προγράμματος-πελάτη

Εδώ είναι ένα JavaScript στον πελάτη, χρησιμοποιώντας μια κλήση AJAX για να ζητήσετε το αρχείο PHP από το παραπάνω παράδειγμα πίνακα:

Παράδειγμα

Χρησιμοποιήστε το JSON.parse() για να μετατρέψετε το αποτέλεσμα σε μια διάταξη JavaScript:

1
2
3
4
5
6
7
8
9
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
    var myObj = JSON.parse(this.responseText);
    document.getElementById("demo").innerHTML = myObj[2];
  }
};
xmlhttp.open("GET", "demo_file_array.php", true);
xmlhttp.send();

Δοκιμάστε το »


Βάση δεδομένων PHP

Η PHP είναι μια γλώσσα προγραμματισμού στο διακομιστή και μπορεί να χρησιμοποιηθεί για πρόσβαση σε μια βάση δεδομένων.

Φανταστείτε ότι έχετε μια βάση δεδομένων στον διακομιστή σας και θέλετε να στείλετε ένα αίτημα από τον πελάτη, όπου ζητάτε τις 10 πρώτες σειρές σε έναν πίνακα που ονομάζεται “customers”.

Στον πελάτη, κάντε ένα αντικείμενο JSON που περιγράφει το όνομα του πίνακα και τους αριθμούς των γραμμών που θέλετε να επιστρέψετε.

Πριν στείλετε το αίτημα στον διακομιστή, μετατρέψτε το αντικείμενο JSON σε μια συμβολοσειρά και στείλτε το ως παράμετρο στην διεύθυνση URL της σελίδας PHP:

Παράδειγμα

Χρησιμοποιήστε το JSON.stringify() για να μετατρέψετε το αντικείμενο JavaScript σε JSON:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
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", "json_demo_db.php?x=" + dbParam, true);
xmlhttp.send();

Δοκιμάστε τον εαυτό σας »

Εξήγηση παραδείγματος:

  • Ορίστε ένα αντικείμενο που περιέχει ιδιότητα πίνακα και ιδιότητα ορίου.
  • Μετατρέψτε το αντικείμενο σε μια συμβολοσειρά JSON.
  • Στείλτε ένα αίτημα στο αρχείο PHP, με τη συμβολοσειρά JSON ως παράμετρο.
  • Περιμένετε μέχρι να επιστραφεί το αίτημα με το αποτέλεσμα (ως JSON)
  • Εμφανίστε το αποτέλεσμα που λάβατε από το αρχείο PHP.

Ρίξτε μια ματιά στο αρχείο PHP:

Αρχείο PHP

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<?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 ? LIMIT ?");
$stmt->bind_param("ss", $obj->table, $obj->limit);
$stmt->execute();
$result = $stmt->get_result();
$outp = $result->fetch_all(MYSQLI_ASSOC);

echo json_encode($outp);
?>

Εξήγηση του PHP αρχείου:

  • Μετατρέψτε το αίτημα σε ένα αντικείμενο, χρησιμοποιώντας τη λειτουργία PHP json_decode() .
  • Αποκτήστε πρόσβαση στη βάση δεδομένων και συμπληρώστε έναν πίνακα με τα ζητούμενα δεδομένα.
  • Προσθέστε τον πίνακα σε ένα αντικείμενο και επιστρέψτε το αντικείμενο ως JSON χρησιμοποιώντας τη λειτουργία json_encode() .

Βρόχος μέσω του αποτελέσματος

Μετατρέψτε το αποτέλεσμα που ελήφθη από το αρχείο PHP σε ένα αντικείμενο JavaScript ή, σε αυτή την περίπτωση, έναν πίνακα JavaScript:

Παράδειγμα

Χρησιμοποιήστε το JSON.parse() για να μετατρέψετε το JSON σε ένα αντικείμενο JavaScript:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
...
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

Κατά την αποστολή δεδομένων στο διακομιστή, είναι συχνά καλύτερο να χρησιμοποιήσετε τη POST μέθοδο HTTP .

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

Τα δεδομένα που αποστέλλονται στο διακομιστή πρέπει τώρα να είναι ένα επιχείρημα για τη send() μέθοδο:

Παράδειγμα

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
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", "json_demo_db_post.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("x=" + dbParam);

Δοκιμάστε τον εαυτό σας »

Η μόνη διαφορά στο αρχείο PHP είναι η μέθοδος για τη λήψη των μεταφερθέντων δεδομένων.

Αρχείο PHP

Χρησιμοποιήστε $ _POST αντί $ _GET:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<?php
header("Content-Type: application/json; charset=UTF-8");
$obj = json_decode($_POST["x"], false);

$conn = new mysqli("myServer", "myUser", "myPassword", "Northwind");
$stmt = $conn->prepare("SELECT name FROM ? LIMIT ?");
$stmt->bind_param("ss", $obj->table, $obj->limit);
$stmt->execute();
$result = $stmt->get_result();
$outp = $result->fetch_all(MYSQLI_ASSOC);

echo json_encode($outp);
?>

Days
Hours
Minutes

09. JSON PHP

Κοινοποίηση

Share on facebook
Share on twitter

Ακολουθήστε μας

Αρέσει σε %d bloggers: