PHP Ajax bemutató példával

⚡ Okos összefoglaló

A PHP-ben található Ajax lehetővé teszi a weboldalak számára, hogy kis mennyiségű adatot cseréljenek a szerverrel, és az oldal egy részét frissítsék teljes újratöltés nélkül. Ez a bemutató egy élő keretrendszer-keresést épít fel, amely bemutatja a klasszikus XMLHttpRequest megközelítést és a modern Fetch API alternatívát.

  • 🔄 Mi az Ajax: Ajax, aszinkron JavaSzkript és XML, az oldal egy részét frissíti a szerverrel történő adatcserével, teljes frissítés nélkül.
  • Miért érdemes használni: Az Ajax gazdag, asztali számítógépekhez hasonló funkciókat kínál, mint például az automatikus kiegészítés, az élő ellenőrzés és a függő legördülő menük.
  • 🖥️ Kliens és szerver: JavaA szkript a böngészőben fut, és meghív egy PHP szkriptet, amely csak az oldal frissítéséhez szükséges adatokat adja vissza.
  • 🔍 Élő keresés: Egy onkeyup kezelő minden billentyűleütést elküld egy PHP szkriptnek, amely azonnal visszaadja a megfelelő keretrendszer-neveket.
  • 📜 XMLHttpKérés: A klasszikus megközelítés létrehoz egy XMLHttpRequest objektumot, és beolvassa a responseText értéket, amikor a kérés befejeződik.
  • 🆕 Lekérési API: A modern kód az XMLHttpRequest-et az ígéretalapú lekéréses függvénnyel helyettesíti a tisztább, olvashatóbb kérések érdekében.
  • 🤖 AI Assist: A mesterséges intelligencia eszközei képesek a régi XMLHttpRequest kódot fetch vagy axios kóddá alakítani, és segíthetnek a sikertelen Ajax kérések hibakeresésében.

PHP Ajax

Mi az az Ajax?

AJAX az aszinkront jelenti JavaForgatókönyv & XML. Ez egy olyan technológia, amely csökkenti a szerver és a kliens közötti interakciókat. Ezt úgy éri el, hogy csak a weboldal egy részét frissíti, nem pedig az egész oldalt. Az aszinkron interakciókat a következő indítja el: JavaSzkript. Az AJAX célja kis mennyiségű adat cseréje a szerverrel oldalfrissítés nélkül.

JavaForgatókönyv egy kliensoldali szkriptnyelv. A kliens oldalon futtatják a webböngészők, amelyek támogatják JavaForgatókönyv. JavaA szkriptkód csak azokban a böngészőkben működik, amelyek rendelkeznek JavaScript engedélyezve.

XML az Extensible Markup Language (Extensible Markup Language) rövidítése. Emberi és gépi olvasmányú formátumban is üzenetek kódolására használják. Hasonló a HTML-hez, de lehetővé teszi saját egyéni címkék létrehozását. Az XML-ről további részletekért lásd a következő cikket: XML.

Miért érdemes AJAX-ot használni?

  • Lehetővé teszi a fejlesztéstping gazdag, interaktív webes alkalmazások, akárcsak az asztali alkalmazások.
  • Az ellenőrzés elvégezhető, miközben a felhasználó kitölt egy űrlapot anélkül, hogy elküldené azt. Ez az automatikus kiegészítéssel érhető el. A felhasználó által beírt szavakat a rendszer elküldi a szervernek feldolgozásra, és a szerver a felhasználó által beírt szavakkal megegyező kulcsszavakkal válaszol.
  • Használható egy legördülő menü kitöltésére egy másik legördülő menü értékétől függően.
  • Az adatok lekérhetők a szerverről, és csak az oldal egy bizonyos része frissíthető anélkül, hogy a teljes oldalt be kellene tölteni. Ez nagyon hasznos olyan weboldalrészek esetében, amelyek olyan dolgokat töltenek be, mint:
    • Tweets
    • Hozzászólások
    • A webhelyet látogató felhasználók és hasonló élő adatok.

Hogyan készítsünk PHP Ajax alkalmazást

Létrehozunk egy egyszerű alkalmazást, amely lehetővé teszi a felhasználók számára a népszerű PHP MVC keretrendszerek keresését.

Az alkalmazásunkban lesz egy szövegmező, ahová a felhasználók beírhatják a keretrendszerek nevét.

Ezután AJAX-szal fogjuk keresni a találatokat, majd a keretrendszer teljes nevét megjelenítjük közvetlenül a keresési űrlap alatt.

1. lépés) Az indexoldal létrehozása

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>

ITT,

  • Az “onkeyup=”showName(this.value)”” végrehajtja a JavaA szkript minden alkalommal kiadja a showName függvényt, amikor egy kulcsot beírunk a szövegmezőbe. Ezt a funkciót automatikus kiegészítésnek nevezik.

2. lépés) A keretrendszerek oldalának létrehozása

keretrendszerek.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;

?>

3. lépés) A JS-szkript létrehozása

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

}

ITT,

  • Az „if (str.length == 0)” függvény ellenőrzi a karakterlánc hosszát. Ha az 0, akkor a szkript többi része nem kerül végrehajtásra.
  • „if (window.XMLHttpRequest)…” Az Internet Explorer 5-ös és 6-os verziói az ActiveXObject objektumot használják az AJAX implementációhoz. Más verziók és böngészők, mint például a Chrome és a Firefox Használj XMLHttpRequest-et. Ez a kód biztosítja, hogy az alkalmazásunk mind az IE 5 és 6, mind a modern böngészőkben működjön.
  • Az „xmlhttp.onreadystatechange=function…” függvény ellenőrzi, hogy az AJAX interakció befejeződött-e és az állapot 200-as-e, majd frissíti a txtName tartományt a visszaadott eredményekkel.

4. lépés) A PHP Ajax alkalmazás tesztelése

Feltételezve, hogy elmentetted az index.php fájlt a phptuts/ajax mappába, keresd meg a URL http://localhost/phptuts/ajax/index.php

PHP Ajax alkalmazásunk tesztelése

Írd be a C betűt a szövegmezőbe. A következő eredményeket kapod.

PHP Ajax alkalmazásunk tesztelése

A fenti példa bemutatja az AJAX koncepcióját, és azt, hogy hogyan segíthet nekünk gazdag, interaktív alkalmazások létrehozásában.

Modern AJAX a Fetch API-val

A fenti XMLHttpRequest objektum továbbra is működik, de az ActiveXObject ága a régi Internet Explorerben már nem szükséges. A modern böngészők biztosítják az ígéretalapú Fetch API-t, amely ugyanazt a kérést sokkal kevesebb kóddal hajtja végre.

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

Ez a verzió ugyanazt a feladatot látja el: elküldi a begépelt szöveget a frameworks.php-nek, és a választ a txtName tartományba helyezi. Az encodeURIComponent metódust is használja a bemenet biztonságos escape-elésére, és az ígéretlánca könnyen bővíthető hibakezeléssel egy catch blokk segítségével.

GYIK

Egy szinkron kérés blokkolja a böngészőt, amíg a szerver nem válaszol, lefagyasztva az oldalt. Egy aszinkron kérés a háttérben fut, így az oldal reszponzív marad, és frissül, amikor az adatok megérkeznek. Az Ajax az aszinkron modellt használja.

A fetch utasítással adj át egy második argumentumbeállító metódust a POST függvénynek és egy törzset, majd olvasd be a $_POST függvényt PHP-ben. Az XMLHttpRequest utasítással hívd meg az open('POST', url) függvényt, állítsd be a Content-Type fejlécet, és küldd el a kódolt adatokat.

A CORS, vagyis a Cross-Origin Resource Sharing blokkolja a böngészőkéréseket egy másik domainre, kivéve, ha az adott szerver elküldi a megfelelő Access-Control-Allow-Origin fejlécet. Adja hozzá a fejlécet a PHP oldalon, vagy hívjon meg egy same-origin függvényt. URL megjavítani.

Igen. Illeszd be az XMLHttpRequest kódot, és a mesterséges intelligencia átírhatja azt az ígéretalapú fetch API vagy az Axios segítségével, hozzáadhat hibakezelést, és megtarthatja ugyanazt a viselkedést. Teszteld az eredményt, mivel a válaszkezelés kissé eltér.

Igen. Oszd meg a kéréskódot és a böngésző konzoljának vagy hálózati hibáját, és a mesterséges intelligencia észreveheti a hibát. URL, egy CORS blokkot, egy hiányzó paramétert vagy egy szerverhibát, majd javasoljon egy javítást.

Foglald össze ezt a bejegyzést a következőképpen: