PHP Ajax Tutorial med eksempel
⚡ Smart opsummering
Ajax i PHP lader en webside udveksle små mængder data med serveren og opdaterer en del af siden uden en fuldstændig genindlæsning. Denne gennemgang opbygger en live framework-søgning, der forklarer den klassiske XMLHttpRequest-tilgang og det moderne Fetch API-alternativ.

Hvad er Ajax?
AJAX står for asynkron JavaScript & XML. Det er en teknologi, der reducerer interaktionerne mellem server og klient. Den gør dette ved kun at opdatere en del af en webside i stedet for hele siden. De asynkrone interaktioner initieres af JavaScript. Formålet med AJAX er at udveksle små mængder data med serveren uden at siden skal opdateres.
JavaScript er et klientsideskriptsprog. Det udføres på klientsiden af webbrowsere, der understøtter JavaManuskript. JavaScript-kode virker kun i browsere, der har JavaScript aktiveret.
XML er akronymet for Extensible Markup Language. Det bruges til at kode beskeder i både menneske- og maskinlæsbare formater. Det er ligesom HTML, men giver dig mulighed for at oprette dine egne brugerdefinerede tags. For flere detaljer om XML, se artiklen om XML.
Hvorfor bruge AJAX?
- Det tillader udviklingping omfattende, interaktive webapplikationer ligesom desktopapplikationer.
- Validering kan udføres, når brugeren udfylder en formular uden at indsende den. Dette kan opnås ved hjælp af automatisk udfyldelse. De ord, som brugeren indtaster, sendes til serveren til behandling, og serveren svarer med nøgleord, der matcher det, brugeren har indtastet.
- Den kan bruges til at udfylde en rullemenu afhængigt af værdien af en anden rullemenu.
- Data kan hentes fra serveren, og kun en bestemt del af en side kan opdateres uden at indlæse hele siden. Dette er meget nyttigt for websidedele, der indlæser ting som:
- Tweets
- Kommentarer
- Brugere, der besøger webstedet, og lignende livedata.
Sådan opretter du en PHP Ajax-applikation
Vi vil skabe en simpel applikation, der giver brugerne mulighed for at søge efter populære PHP MVC-rammer.
Vores applikation vil have en tekstboks, hvor brugerne skriver navnene på frameworksene.
Vi bruger derefter AJAX til at søge efter et match og viser derefter frameworkets fulde navn lige under søgeformularen.
Trin 1) Oprettelse af indekssiden
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>
HER,
- "onkeyup="showName(this.value)"" udfører JavaScriptfunktionen showName hver gang en tast indtastes i tekstfeltet. Denne funktion kaldes autofuldførelse.
Trin 2) Oprettelse af frameworks-siden
frameworks.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; ?>
Trin 3) Oprettelse af JS-scriptet
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(); }
HER,
- "if (str.length == 0)" kontrollerer strengens længde. Hvis den er 0, udføres resten af scriptet ikke.
- "if (window.XMLHttpRequest)..." Internet Explorer version 5 og 6 bruger ActiveXObject til AJAX-implementeringen. Andre versioner og browsere som Chrome og Firefox Brug XMLHttpRequest. Denne kode sikrer, at vores applikation fungerer i både IE 5 & 6 og moderne browsere.
- "xmlhttp.onreadystatechange=function…" kontrollerer, om AJAX-interaktionen er fuldført, og om status er 200, og opdaterer derefter txtName-span'et med de returnerede resultater.
Trin 4) Test af vores PHP Ajax-applikation
Hvis du har gemt filen index.php i phptuts/ajax, skal du gå til URL http://localhost/phptuts/ajax/index.php
Skriv bogstavet C i tekstfeltet. Du får følgende resultater.
Ovenstående eksempel demonstrerer konceptet bag AJAX, og hvordan det kan hjælpe os med at skabe omfattende, interaktive applikationer.
Moderne AJAX med Fetch API'en
XMLHttpRequest-objektet ovenfor fungerer stadig, men dets ActiveXObject-gren til den gamle Internet Explorer er ikke længere nødvendig. Moderne browsere leverer den promise-baserede Fetch API, som foretager den samme anmodning med langt mindre kode.
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; }); }
Denne version gør det samme: den sender den indtastede tekst til frameworks.php og placerer svaret i txtName-span'et. Den bruger også encodeURIComponent til sikkert at undslippe inputtet, og dens promise chain er nem at udvide med fejlhåndtering ved hjælp af en catch-blok.


