JSON PHP

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

PHP dosyasını gösterin

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

Kişisel olarak deneyin

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

PHP dosyasını gösterin

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

Kişisel olarak deneyin

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

Kişisel olarak deneyin

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

Kişisel olarak deneyin

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

Kişisel olarak deneyin

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