Örnekle PHP Ajax Eğitimi

⚡ Akıllı Özet

PHP'de Ajax, bir web sayfasının sunucuyla küçük miktarda veri alışverişi yapmasına ve sayfanın tamamını yeniden yüklemeden sayfanın bir bölümünü güncellemesine olanak tanır. Bu kılavuz, klasik XMLHttpRequest yaklaşımını ve modern Fetch API alternatifini açıklayarak canlı bir çerçeve araması oluşturmaktadır.

  • 🔄 Ajax Nedir: Ajax, Asenkron JavaKomut dosyası ve XML kullanarak, sayfanın tamamını yenilemeden sunucuyla veri alışverişi yaparak sayfanın bir bölümünü günceller.
  • Neden Kullanmalısınız: Ajax, otomatik tamamlama, canlı doğrulama ve bağımlı açılır menüler gibi zengin, masaüstü benzeri özellikler sunar.
  • 🖥️ İstemci ve Sunucu: JavaKomut dosyası tarayıcıda çalışır ve sayfayı güncellemek için gereken verileri döndüren bir PHP komut dosyasını çağırır.
  • 🔍 Canlı Arama: `onkeyup` olay işleyicisi, her tuş vuruşunu, eşleşen çerçeve adlarını anında döndüren bir PHP betiğine gönderir.
  • 📜 XMLHttpRequest: Klasik yaklaşım, bir XMLHttpRequest nesnesi oluşturur ve istek tamamlandığında responseText'i okur.
  • 🆕 Veri Çekme API'si: Modern kod, daha temiz ve okunabilir istekler için XMLHttpRequest'in yerini promise tabanlı fetch fonksiyonuyla değiştiriyor.
  • 🤖 Yapay Zeka Yardımı: Yapay zeka araçları, eski XMLHttpRequest kodunu fetch veya axios'a dönüştürebilir ve başarısız Ajax isteklerinin hata ayıklamasına yardımcı olabilir.

PHP Ajax

Ajax nedir?

AJAX Asynchronous (Asenkron) anlamına gelir. JavaSenaryo XML, sunucu ve istemci arasındaki etkileşimleri azaltan bir teknolojidir. Bunu, web sayfasının tamamını değil, yalnızca bir bölümünü güncelleyerek yapar. Asenkron etkileşimler şu şekilde başlatılır: JavaAJAX betiğinin amacı, sayfa yenilenmesine gerek kalmadan sunucuyla küçük miktarda veri alışverişi yapmaktır.

JavaSenaryo İstemci tarafında çalışan bir betik dilidir. Destekleyen web tarayıcıları tarafından istemci tarafında yürütülür. JavaSenaryo. JavaKomut dosyası kodu yalnızca şu tarayıcılarda çalışır: JavaKomut dosyası etkinleştirildi.

XML XML, Genişletilebilir İşaretleme Dili'nin (Extensible Markup Language) kısaltmasıdır. Hem insan hem de makine tarafından okunabilir formatlarda mesajları kodlamak için kullanılır. HTML'ye benzer ancak kendi özel etiketlerinizi oluşturmanıza olanak tanır. XML hakkında daha fazla bilgi için ilgili makaleye bakın. XML.

Neden AJAX'ı kullanmalısınız?

  • Bu, gelişmeye olanak tanır.ping Masaüstü uygulamaları gibi zengin, etkileşimli web uygulamaları.
  • Doğrulama, kullanıcı formu doldurmaya devam ederken, formu göndermeden de gerçekleştirilebilir. Bu, otomatik tamamlama kullanılarak sağlanabilir. Kullanıcının yazdığı kelimeler işlenmek üzere sunucuya gönderilir ve sunucu, kullanıcının girdiği kelimelerle eşleşen anahtar kelimelerle yanıt verir.
  • Bu özellik, bir açılır kutunun değerine bağlı olarak başka bir açılır kutunun içeriğini doldurmak için kullanılabilir.
  • Veriler sunucudan alınabilir ve sayfanın tamamı yüklenmeden yalnızca belirli bir bölümü güncellenebilir. Bu, aşağıdaki gibi şeyleri yükleyen web sayfası bölümleri için çok kullanışlıdır:
    • Tweetler
    • Yorumlar
    • Siteyi ziyaret eden kullanıcılar ve benzeri canlı veriler.

PHP Ajax uygulaması nasıl oluşturulur?

Kullanıcıların popüler PHP MVC çerçevelerini aramasına olanak tanıyan basit bir uygulama oluşturacağız.

Uygulamamızda, kullanıcıların çerçevelerin adlarını yazabileceği bir metin kutusu bulunacaktır.

Ardından AJAX kullanarak eşleşme arayacağız ve arama formunun hemen altına çerçevenin tam adını göstereceğiz.

Adım 1) Dizin sayfasını oluşturma

index.php

<html>

<head>

<title>PHP MVC Frameworks - Search Engine</title>

<script type="text/javascript" src="auto_complete.js"></script>

</head>

<body>

<h2>PHP MVC Frameworks - Search Engine</h2>

<p><b>Type the first letter of the PHP MVC Framework</b></p>

<form method="POST" action="index.php">

<p><input type="text" size="40" id="txtHint" onkeyup="showName(this.value)"></p>

</form>

<p>Matches: <span id="txtName"></span></p>

</body>

</html>

İŞTE,

  • “onkeyup=”showName(this.value)”” komutu çalıştırır JavaKomut dosyasındaki `showName` fonksiyonu, metin kutusuna her tuşa basıldığında çalıştırılır. Bu özelliğe otomatik tamamlama denir.

Adım 2) Çerçeveler sayfasını oluşturma

çerçeveler.php

<?php

$frameworks = array("CodeIgniter","Zend Framework","Cake PHP","Kohana") ;

$name = $_GET["name"];

if (strlen($name) > 0) {

$match = "";

for ($i = 0; $i < count($frameworks); $i++) {

if (strtolower($name) == strtolower(substr($frameworks[$i], 0, strlen($name)))) {

if ($match == "") {

$match = $frameworks[$i];

} else {

$match = $match . " , " . $frameworks[$i];

}

}

}

}

echo ($match == "") ? 'no match found' : $match;

?>

Adım 3) JS betiğini oluşturma

auto_complete.js

function showName(str){

if (str.length == 0){ // exit function if nothing has been typed in the textbox

document.getElementById("txtName").innerHTML=""; // clear previous results

return;

}

if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp=new XMLHttpRequest();

} else {// code for IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}

xmlhttp.onreadystatechange=function() {

if (xmlhttp.readyState == 4 && xmlhttp.status == 200){

document.getElementById("txtName").innerHTML=xmlhttp.responseText;

}

}

xmlhttp.open("GET","frameworks.php?name="+str,true);

xmlhttp.send();

}

İŞTE,

  • “if (str.length == 0)” ifadesi, dizenin uzunluğunu kontrol eder. Eğer uzunluk 0 ise, komut dosyasının geri kalanı yürütülmez.
  • “if (window.XMLHttpRequest)…” Internet Explorer 5 ve 6 sürümleri AJAX uygulaması için ActiveXObject kullanır. Chrome gibi diğer sürümler ve tarayıcılar ise farklı bir yöntem kullanır. Firefox XMLHttpRequest kullanın. Bu kod, uygulamamızın hem IE 5 ve 6'da hem de modern tarayıcılarda çalışmasını sağlar.
  • “xmlhttp.onreadystatechange=function…” ifadesi, AJAX etkileşiminin tamamlanıp tamamlanmadığını ve durumun 200 olup olmadığını kontrol eder, ardından txtName alanını döndürülen sonuçlarla günceller.

Adım 4) PHP Ajax uygulamamızı test etme

index.php dosyasını phptuts/ajax klasörüne kaydettiğinizi varsayarak, aşağıdaki adrese gidin: URL http://localhost/phptuts/ajax/index.php

PHP Ajax Uygulamamızı test etme

Metin kutusuna C harfini yazın. Aşağıdaki sonuçları alacaksınız.

PHP Ajax Uygulamamızı test etme

Yukarıdaki örnek, AJAX kavramını ve bunun zengin, etkileşimli uygulamalar oluşturmamıza nasıl yardımcı olabileceğini göstermektedir.

Fetch API ile Modern AJAX

Yukarıdaki XMLHttpRequest nesnesi hala çalışıyor, ancak eski Internet Explorer için ActiveXObject dalına artık ihtiyaç yok. Modern tarayıcılar, aynı isteği çok daha az kodla yapan, vaat tabanlı Fetch API'sini sağlıyor.

function showName(str) {
    if (str.length === 0) {
        document.getElementById("txtName").innerHTML = "";
        return;
    }
    fetch("frameworks.php?name=" + encodeURIComponent(str))
        .then(response => response.text())
        .then(text => {
            document.getElementById("txtName").innerHTML = text;
        });
}

Bu sürüm de aynı işi yapıyor: yazılan metni frameworks.php'ye gönderiyor ve yanıtı txtName span'ine yerleştiriyor. Ayrıca, girdiyi güvenli bir şekilde kaçırmak için encodeURIComponent kullanıyor ve hata işleme için bir catch bloğu kullanarak promise zincirini genişletmek kolay.

SSS

Senkron istek, sunucu yanıt verene kadar tarayıcıyı bloke ederek sayfayı dondurur. Asenkron istek ise arka planda çalışır, bu nedenle sayfa her zaman yanıt verir ve veriler geldiğinde güncellenir. Ajax, asenkron modeli kullanır.

`fetch` ile, ikinci bir argüman olarak yöntemi `POST` ve bir gövde olarak ayarlayın, ardından PHP'de `$_POST`'u okuyun. `XMLHttpRequest` ile, `open('POST', url)` çağrısını yapın, `Content-Type` başlığını ayarlayın ve kodlanmış verileri gönderin.

CORS (Çapraz Kaynak Paylaşımı), tarayıcının farklı bir alan adına yaptığı istekleri, o sunucu doğru Access-Control-Allow-Origin başlığını göndermediği sürece engeller. PHP tarafında başlığı ekleyin veya aynı kaynaktan erişim sağlama yöntemini çağırın. URL Tamir etmek için.

Evet. XMLHttpRequest kodunu yapıştırın, yapay zeka bunu promise tabanlı fetch API veya axios kullanarak yeniden yazabilir, hata işleme ekleyebilir ve aynı davranışı koruyabilir. Yanıt işleme biraz farklılık gösterdiği için sonucu test edin.

Evet. İstek kodunu ve tarayıcı konsolunu veya ağ hatasını paylaşın, yapay zeka bir hatayı tespit edebilir. URLBir CORS engellemesi, eksik bir parametre veya sunucu hatası tespit edilirse, denenecek düzeltmeyi önerir.

Bu yazıyı şu şekilde özetleyin: