JSON PHP
- Önceki Sayfa JSON Sunucusu
- Sonraki Sayfa JSON HTML
JSON'ın yaygın kullanımı, web sunucusundan veri okumak ve ardından bu verileri web sayfasında göstermektir.
Bu bölümde, PHP istemci ve PHP sunucusu arasında JSON verisi nasıl takas edileceğini öğreneceksiniz.
PHP Dosyası
PHP, JSON işleme için yerleşik fonksiyonlar sağlar.
PHP fonksiyonunu kullanarak json_encode()
,PHP'teki nesneler JSON'a dönüştürülebilir:
PHP Dosyası
<?php $myObj->ad = "Bill Gates"; $myObj->yaş = 62; $myObj->city = "Seattle"; $myJSON = json_encode($myObj); echo $myJSON; ?>
Müşteri taraflı JavaScript
Bu, örneğin PHP dosyasını talep eden istemleri kullanarak istemde bulunan müşteri taraflı JavaScript'tir:
örnek
kullanarak JSON.parse()
Sonuçları JavaScript nesnesine dönüştürün:
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 dizisi
PHP fonksiyonu kullanırken json_encode()
içindeyken, PHP'deki dizide de JSON'a dönüştürülür:
PHP Dosyası
<?php $myArr = array("Bill Gates", "Steve Jobs", "Elon Musk"); $myJSON = json_encode($myArr); echo $myJSON; ?>
Müşteri taraflı JavaScript
Bu, örneğin PHP dosyasını talep eden istemleri kullanarak istemde bulunan müşteri taraflı JavaScript'tir:
örnek
Kullanın JSON.parse()
Sonuçları JavaScript dizisine dönüştürün:
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 veritabanı
PHP sunucu taraflı programlama dili, yalnızca sunucu tarafından çalıştırılabilecek işlemler için kullanılmalıdır, örneğin veritabanına erişim.
Bir sunucuda bir veritabanı olduğunu ve müşteri, ürün ve tedarikçi verilerini içerdiğini hayal edin.
Şu anda, "müşteri" tablosunda ilk on kaydı almak için sunucudan istek yapmanız gerekiyor:
örnek
Kullanın JSON.stringify()
JavaScript nesnesini JSON'a dönüştürün:
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();
Örnek açıklama:
- table özelliği ve limit özelliği içeren nesneyi tanımlayın.
- Bu nesneyi JSON dizisi olarak dönüştürün.
- Bu PHP dosyasına JSON olarak parametre olarak gönderilen bir istek gönderin.
- İstek sonuçlarını döndrene kadar bekleyin (JSON olarak).
- PHP dosyasından alınan sonuçları göster.
PHP dosyasını görüntüle
PHP Dosyası
<?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 dosyası açıklaması:
- PHP fonksiyonunu kullanarak istekleri nesneye dönüştürün
json_decode()
. - Talep edilen verilerle veritabanına erişin ve diziyi doldurun.
- Diziyi nesneye ekleyin, kullanarak
json_encode()
JSON ile dönen nesneyi fonksiyonla döndürür.
Sonuçları tarayın
PHP dosyasından alınan sonuçları JavaScript nesnesine dönüştürün, veya bu örnekte olduğu gibi, bir JavaScript dizisine:
örnek
kullanarak JSON.parse()
JSON'ı JavaScript nesnesine dönüştürün:
... 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 yöntemi = POST
Verileri sunucuya gönderirken, genellikle HTTP POST yöntemini kullanmak en iyisidir.
AJAX isteklerini POST yöntemi ile göndermek için, bu yöntemi ve doğru başlıkları belirtin.
Sunucuya gönderilen veriler şimdi gönderilmelidir .send();
metodun parametreleri:
örnek
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 dosyasındaki tek fark, iletilen verileri almanın yöntemidir.
PHP Dosyası
kullanarak $_POST
değil $_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); ?>
- Önceki Sayfa JSON Sunucusu
- Sonraki Sayfa JSON HTML