JSON PHP
- Edellinen sivu JSON-palvelin
- Seuraava sivu JSON HTML
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; ?>
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();
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; ?>
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();
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();
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; }); }); ...
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);
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); ?>
- Edellinen sivu JSON-palvelin
- Seuraava sivu JSON HTML