JSON PHP

JSON:n tavallinen käyttötarkoitus on lukea tietoja web-palvelimelta ja näyttää ne verkkosivulla.

Tämä luku selittää, miten JSON-tietoja vaihdetaan PHP-palvelimen ja asiakaspuolen välillä.

PHP-tiedostoa

PHP tarjoaa sisäänrakennettuja funktioita JSON:n käsittelyyn.

PHP:n funktioiden avulla json_encode()PHP:n objektit voidaan muuntaa JSONiksi:

PHP-tiedostoa

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

Näytä PHP-tiedosto

Asiakaspuolinen JavaScript

Tämä on asiakaspuolinen JavaScript, joka käyttää AJAX-kutsuja pyytääksesi edellisen esimerkin PHP-tiedostoa:

Esimerkki

käyttää JSON.parse() Muunna tulokset JavaScript-objektiksi:

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

Kokeile itse

PHP-taulukko

Kun käytetään PHP-funktiota json_encode() Kun PHP:ssä käytetään tätä ajanhetkellä:

PHP-tiedostoa

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

Näytä PHP-tiedosto

Asiakaspuolinen JavaScript

Tämä on asiakaspuolinen JavaScript, joka käyttää AJAX-kutsuja pyytääksesi edellisen esimerkin PHP-tiedostoa:

Esimerkki

Käytä JSON.parse() Muunna tulokset JavaScript-tauluksi:

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

Kokeile itse

PHP-tietokanta

PHP on palvelinpuolinen ohjelmointikieli, joka tulisi käyttää vain palvelimen suorittamissa toimissa, kuten tietokannan käyttämisessä.

Kuvittele, että palvelimella on tietokanta, joka sisältää asiakas-, tuote- ja toimittajatiedot.

Tässä vaiheessa sinun täytyy pyytää palvelinta saadaksesi "客户"-taulun ensimmäiset kymmenen merkintää:

Esimerkki

Käytä JSON.stringify() Muunna JavaScript-objekti JSON:ksi:

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

Kokeile itse

Esimerkki selityksestä:

  • Määritä objekti, joka sisältää "table"-ominaisuuden ja "limit"-ominaisuuden.
  • Muunna tämä objekti JSON-merkkijonoksi.
  • Lähetä pyyntö tähän PHP-tiedostoon, jossa JSON on parametrina.
  • Odota, kunnes pyyntö palauttaa tuloksen (JSON-muodossa).
  • Näytä PHP-tiedostosta vastaanotetut tulokset.

Tarkastele PHP-tiedostoa

PHP-tiedostoa

<?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-tiedoston selitys:

  • Muunna pyyntö objektiksi käyttämällä PHP-funktiota json_decode().
  • Tarkista tietokanta, täytä taulukko pyydetyillä tiedoilla.
  • Lisää taulukko objektiin käyttämällä json_encode() Funktio palauttaa objektin JSON-muodossa.

Käy läpi tulokset

Muunna PHP-tiedostosta vastaanotetut tulokset JavaScript-objektiksi tai tässä tapauksessa JavaScript-arrayksi:

Esimerkki

käyttää JSON.parse() Muunna JSON JavaScript-objektiksi:

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

Kokeile itse

PHP-menetelmä = POST

Kun lähetät tietoja palvelimelle, HTTP POST -menetelmä on yleensä paras valinta.

Jos haluat käyttää POST-metodia AJAX-pyynnön lähettämiseen, määritä tämä metodi ja oikeat otsikot.

Lähetettävänä olevat tiedot palvelimelle täytyy olla .send(); Metodin parametrit:

Esimerkki

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

Kokeile itse

PHP-tiedostossa on vain yksi erityinen ero, kuinka saadaan haettua lähetettyjä tietoja.

PHP-tiedostoa

käyttää $_POST ei $_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);
?>