PHP Ajax vodič s primjerom

⚡ Pametni sažetak

Ajax u PHP-u omogućuje web stranici razmjenu malih količina podataka s poslužiteljem i ažuriranje dijela stranice bez potpunog ponovnog učitavanja. Ovaj vodič izrađuje pretraživanje uživo okvira, objašnjavajući klasični XMLHttpRequest pristup i modernu alternativu Fetch API-ju.

  • 🔄 Što je Ajax: Ajax, asinkroni JavaSkripta i XML ažuriraju dio stranice razmjenom podataka s poslužiteljem bez potpunog osvježavanja.
  • Zašto ga koristiti: Ajax omogućuje bogate značajke slične onima na računalu, kao što su automatsko dovršavanje, validacija uživo i ovisni padajući izbornici.
  • 🖥️ Klijent i poslužitelj: JavaSkripta se izvršava u pregledniku i poziva PHP skriptu koja vraća samo podatke potrebne za ažuriranje stranice.
  • 🔍 Pretraživanje uživo: onkeyup rukovatelj šalje svaki pritisak tipke PHP skripti koja odmah vraća odgovarajuća imena okvira.
  • 📜 XMLHttpRequest: Klasični pristup stvara objekt XMLHttpRequest i čita responseText kada se zahtjev završi.
  • 🆕 API za dohvaćanje: Moderni kod zamjenjuje XMLHttpRequest funkcijom dohvaćanja temeljenom na obećanjima za čišće i čitljivije zahtjeve.
  • 🤖 AI pomoć: AI alati mogu pretvoriti stari XMLHttpRequest kod u fetch ili axios i pomoći u otklanjanju grešaka u neuspjelim Ajax zahtjevima.

PHP Ajax

Što je Ajax?

AJAX označava asinkroni JavaScript & XML. To je tehnologija koja smanjuje interakcije između poslužitelja i klijenta. To čini ažuriranjem samo dijela web stranice, a ne cijele stranice. Asinkrone interakcije pokreće JavaSkripta. Svrha AJAX-a je razmjena malih količina podataka s poslužiteljem bez osvježavanja stranice.

JavaScript je skriptni jezik na strani klijenta. Izvršava se na strani klijenta pomoću web preglednika koji podržavaju JavaSkripta. JavaKod skripte radi samo u preglednicima koji imaju JavaSkripta omogućena.

XML je kratica za Extensible Markup Language (proširivi jezik za označavanje). Koristi se za kodiranje poruka u formatima čitljivim ljudima i strojevima. Sličan je HTML-u, ali vam omogućuje stvaranje vlastitih prilagođenih oznaka. Za više detalja o XML-u pogledajte članak o XML.

Zašto koristiti AJAX?

  • Omogućuje razvojping bogate, interaktivne web aplikacije baš kao i desktop aplikacije.
  • Validacija se može izvršiti dok korisnik ispunjava obrazac bez slanja. To se može postići automatskim dovršavanjem. Riječi koje korisnik upiše šalju se poslužitelju na obradu, a poslužitelj odgovara ključnim riječima koje odgovaraju onome što je korisnik unio.
  • Može se koristiti za popunjavanje padajućeg izbornika ovisno o vrijednosti drugog padajućeg izbornika.
  • Podaci se mogu preuzeti s poslužitelja i ažurirati samo određeni dio stranice bez učitavanja cijele stranice. Ovo je vrlo korisno za dijelove web stranice koji učitavaju stvari poput:
    • T
    • Komentari
    • Korisnici koji posjećuju stranicu i slični podaci uživo.

Kako napraviti PHP Ajax aplikaciju

Napravit ćemo jednostavnu aplikaciju koja korisnicima omogućuje pretragu popularnih PHP MVC okvira.

Naša aplikacija će imati tekstualni okvir u koji korisnici upisuju nazive okvira.

Zatim ćemo koristiti AJAX za pretraživanje podudaranja, a zatim prikazati puni naziv okvira odmah ispod obrasca za pretraživanje.

Korak 1) Stvaranje indeksne stranice

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>

OVDJE,

  • “onkeyup=”showName(this.value)”” izvršava JavaFunkcija skripte prikazuje ime svaki put kada se u tekstualno polje upiše tipka. Ova se značajka naziva automatsko dovršavanje.

Korak 2) Izrada okvirne stranice

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

?>

Korak 3) Izrada JS skripte

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

}

OVDJE,

  • „if (str.length == 0)“ provjerava duljinu niza. Ako je 0, ostatak skripte se ne izvršava.
  • „ako (window.XMLHttpRequest)…“ Internet Explorer verzije 5 i 6 koriste ActiveXObject za AJAX implementaciju. Druge verzije i preglednici poput Chromea i Firefox koristite XMLHttpRequest. Ovaj kod osigurava da naša aplikacija radi i u IE 5 i 6 te u modernim preglednicima.
  • „xmlhttp.onreadystatechange=function…“ provjerava je li AJAX interakcija dovršena i je li status 200, a zatim ažurira raspon txtName s vraćenim rezultatima.

Korak 4) Testiranje naše PHP Ajax aplikacije

Pod pretpostavkom da ste spremili datoteku index.php u phptuts/ajax, idite do URL http://localhost/phptuts/ajax/index.php

Testiranje naše PHP Ajax aplikacije

Upišite slovo C u tekstualni okvir. Dobit ćete sljedeće rezultate.

Testiranje naše PHP Ajax aplikacije

Gornji primjer pokazuje koncept AJAX-a i kako nam on može pomoći u stvaranju bogatih, interaktivnih aplikacija.

Moderni AJAX s Fetch API-jem

Gornji objekt XMLHttpRequest i dalje radi, ali njegova grana ActiveXObject za stari Internet Explorer više nije potrebna. Moderni preglednici pružaju Fetch API temeljen na obećanjima, koji isti zahtjev izvršava s puno manje koda.

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

Ova verzija radi isti posao: šalje upisani tekst u frameworks.php i stavlja odgovor u raspon txtName. Također koristi encodeURIComponent za sigurno izbjegavanje ulaza, a njegov lanac obećanja lako se proširuje rukovanjem pogreškama pomoću catch bloka.

Pitanja i odgovori

Sinkroni zahtjev blokira preglednik dok poslužitelj ne odgovori, zamrzavajući stranicu. Asinkroni zahtjev izvršava se u pozadini, tako da stranica ostaje responzivna i ažurira se kada podaci stignu. Ajax koristi asinkroni model.

S metodom fetch, proslijedite drugu metodu postavljanja argumenta POST-u i tijelu, zatim pročitajte $_POST u PHP-u. S XMLHttpRequest, pozovite open('POST', url), postavite zaglavlje Content-Type i pošaljite kodirane podatke.

CORS, Cross-Origin Resource Sharing, blokira zahtjeve preglednika prema drugoj domeni osim ako taj poslužitelj ne pošalje ispravan zaglavlje Access-Control-Allow-Origin. Dodajte zaglavlje na PHP strani ili pozovite same-origin URL da to popravi.

Da. Zalijepite XMLHttpRequest kod, a umjetna inteligencija ga može prepisati koristeći API za dohvaćanje temeljen na obećanjima ili axios, dodati rukovanje pogreškama i zadržati isto ponašanje. Testirajte rezultat, budući da se rukovanje odgovorima malo razlikuje.

Da. Podijelite kod zahtjeva i konzolu preglednika ili mrežnu pogrešku, a umjetna inteligencija može uočiti pogrešku URL, CORS blok, nedostajući parametar ili pogrešku poslužitelja, a zatim predložite ispravak koji treba isprobati.

Sažmite ovu objavu uz: