JSON PHP
JSON'un yaygın bir kullanımı, bir web sunucusundan veri okumak ve verileri bir web sayfasında görüntülemektir.
Bu bölüm, istemci ve bir PHP sunucusu arasında JSON verilerinin nasıl değiş tokuş edileceğini öğretecektir.
PHP Dosyası
PHP, JSON'u işlemek için bazı yerleşik işlevlere sahiptir.
PHP'deki nesneler, json_encode() PHP işlevi kullanılarak JSON'a dönüştürülebilir :
PHP dosyası
<?php
$myObj->name = "John";
$myObj->age = 30;
$myObj->city = "New
York";
$myJSON = json_encode($myObj);
echo $myJSON;
?>
İstemci JavaScript'i
Yukarıdaki örnekten PHP dosyasını istemek için bir AJAX çağrısı kullanan istemcide bir JavaScript:
Örnek
Sonucu bir JavaScript nesnesine dönüştürmek için JSON.parse() kullanın:
const xmlhttp = new XMLHttpRequest();
xmlhttp.onload = function() {
const myObj = JSON.parse(this.responseText);
document.getElementById("demo").innerHTML = myObj.name;
}
xmlhttp.open("GET", "demo_file.php");
xmlhttp.send();
PHP Dizisi
PHP'deki diziler, json_encode() PHP işlevi kullanıldığında da JSON'a dönüştürülür :
PHP dosyası
<?php
$myArr = array("John", "Mary", "Peter", "Sally");
$myJSON = json_encode($myArr);
echo $myJSON;
?>
İstemci JavaScript'i
Yukarıdaki dizi örneğinden PHP dosyasını istemek için bir AJAX çağrısı kullanan istemcide bir JavaScript:
Örnek
Sonucu bir JavaScript dizisine dönüştürmek için JSON.parse() kullanın:
var xmlhttp = new XMLHttpRequest();
xmlhttp.onload = function() {
const myObj = JSON.parse(this.responseText);
document.getElementById("demo").innerHTML = myObj[2];
}
xmlhttp.open("GET", "demo_file_array.php", true);
xmlhttp.send();
PHP Veritabanı
PHP bir sunucu tarafı programlama dilidir ve bir veritabanına erişmek için kullanılabilir.
Sunucunuzda bir veritabanınız olduğunu ve "müşteriler" adlı bir tablodaki ilk 10 satırı istediğiniz istemciden ona bir istek göndermek istediğinizi düşünün.
İstemcide, döndürmek istediğiniz satır sayısını açıklayan bir JSON nesnesi oluşturun.
İsteği sunucuya göndermeden önce, JSON nesnesini bir dizgeye dönüştürün ve PHP sayfasının url'sine parametre olarak gönderin:
Örnek
JavaScript nesnesini JSON'a dönüştürmek için JSON.stringify() kullanın:
const limit = {"limit":10};
const dbParam = JSON.stringify(limit);
xmlhttp = new XMLHttpRequest();
xmlhttp.onload = function() {
document.getElementById("demo").innerHTML = this.responseText;
}
xmlhttp.open("GET","json_demo_db.php?x=" + dbParam);
xmlhttp.send();
Örnek açıkladı:
- Bir "limit" özelliği ve değeri içeren bir nesne tanımlayın.
- Nesneyi bir JSON dizesine dönüştürün.
- JSON dizesini parametre olarak kullanarak PHP dosyasına bir istek gönderin.
- İstek sonuçla birlikte dönene kadar bekleyin (JSON olarak)
- PHP dosyasından alınan sonucu görüntüleyin.
PHP dosyasına bir göz atın:
PHP dosyası
<?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 customers LIMIT ?");
$stmt->bind_param("s", $obj->limit);
$stmt->execute();
$result = $stmt->get_result();
$outp = $result->fetch_all(MYSQLI_ASSOC);
echo json_encode($outp);
?>
PHP Dosyası açıkladı:
- PHP json_decode() işlevini kullanarak isteği bir nesneye dönüştürün .
- Veritabanına erişin ve bir diziyi istenen verilerle doldurun.
- Diziyi bir nesneye ekleyin ve json_encode() işlevini kullanarak nesneyi JSON olarak döndürün.
Verileri Kullan
Örnek
xmlhttp.onload = function() {
const myObj = JSON.parse(this.responseText);
let text = "";
for (let x in myObj) {
text += myObj[x].name + "<br>";
}
document.getElementById("demo").innerHTML = text;
}
PHP Yöntemi = POST
Sunucuya veri gönderirken genellikle HTTP POST
yöntemini kullanmak en iyisidir.
Yöntemi kullanarak AJAX istekleri göndermek için POST
yöntemi ve doğru başlığı belirtin.
Sunucuya gönderilen veriler artık send()
yöntemin bir argümanı olmalıdır:
Örnek
const dbParam = JSON.stringify({"limit":10});
const xmlhttp = new XMLHttpRequest();
xmlhttp.onload = function() {
const myObj = JSON.parse(this.responseText);
let text ="";
for (let x in myObj) {
text += myObj[x].name + "<br>";
}
document.getElementById("demo").innerHTML = text;
}
xmlhttp.open("POST", "json_demo_db_post.php");
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("x=" + dbParam);
PHP dosyasındaki tek fark, aktarılan verileri alma yöntemidir.
PHP dosyası
$_GET yerine $_POST kullanın:
<?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 customers LIMIT ?");
$stmt->bind_param("s",
$obj->limit);
$stmt->execute();
$result = $stmt->get_result();
$outp = $result->fetch_all(MYSQLI_ASSOC);
echo json_encode($outp);
?>