PHP Ajax handledning med exempel
โก Smart sammanfattning
Ajax i PHP lรฅter en webbsida utbyta smรฅ mรคngder data med servern och uppdatera delar av sidan utan att behรถva laddas om helt. Den hรคr genomgรฅngen bygger en live-ramverkssรถkning och fรถrklarar den klassiska XMLHttpRequest-metoden och det moderna Fetch API-alternativet.

Vad รคr Ajax?
AJAX stรฅr fรถr asynkron JavaScript & XML. Det รคr en teknik som minskar interaktionerna mellan servern och klienten. Den gรถr detta genom att bara uppdatera en del av en webbsida istรคllet fรถr hela sidan. De asynkrona interaktionerna initieras av JavaSkript. Syftet med AJAX รคr att utbyta smรฅ mรคngder data med servern utan att sidan behรถver uppdateras.
JavaScript รคr ett skriptsprรฅk pรฅ klientsidan. Det kรถrs pรฅ klientsidan av webblรคsare som stรถder JavaManus. JavaSkriptkod fungerar bara i webblรคsare som har JavaSkript aktiverat.
XML รคr fรถrkortningen fรถr Extensible Markup Language. Det anvรคnds fรถr att koda meddelanden i bรฅde mรคnskliga och maskinlรคsbara format. Det รคr som HTML men lรฅter dig skapa dina egna anpassade taggar. Fรถr mer information om XML, se artikeln om XML.
Varfรถr anvรคnda AJAX?
- Det tillรฅter utvecklingping rika, interaktiva webbapplikationer precis som skrivbordsapplikationer.
- Validering kan utfรถras nรคr anvรคndaren fyller i ett formulรคr utan att skicka in det. Detta kan uppnรฅs med hjรคlp av automatisk ifyllning. Orden som anvรคndaren skriver in skickas till servern fรถr bearbetning, och servern svarar med nyckelord som matchar det som anvรคndaren angav.
- Den kan anvรคndas fรถr att fylla i en rullgardinsmeny beroende pรฅ vรคrdet i en annan rullgardinsmeny.
- Data kan hรคmtas frรฅn servern och endast en viss del av en sida uppdateras utan att hela sidan laddas. Detta รคr mycket anvรคndbart fรถr webbsidedelar som laddar saker som:
- Tweets
- Kommentarer
- Anvรคndare som besรถker webbplatsen och liknande livedata.
Hur man skapar en PHP Ajax-applikation
Vi kommer att skapa en enkel applikation som lรฅter anvรคndare sรถka efter populรคra PHP MVC-ramverk.
Vรฅr applikation kommer att ha en textruta dรคr anvรคndare skriver in namnen pรฅ ramverken.
Vi anvรคnder sedan AJAX fรถr att sรถka efter en matchning och visar sedan ramverkets fullstรคndiga namn precis under sรถkformulรคret.
Steg 1) Skapa indexsidan
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>
HรR,
- "onkeyup="showName(this.value)"" kรถr JavaSkriptfunktionen showName varje gรฅng en tangent skrivs i textrutan. Den hรคr funktionen kallas autokomplettering.
Steg 2) Skapa ramverkssidan
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; ?>
Steg 3) Skapa JS-skriptet
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(); }
HรR,
- "if (str.length == 0)" kontrollerar strรคngens lรคngd. Om den รคr 0, kรถrs inte resten av skriptet.
- โif (window.XMLHttpRequest)โฆโ Internet Explorer version 5 och 6 anvรคnder ActiveXObject fรถr AJAX-implementeringen. Andra versioner och webblรคsare som Chrome och Firefox anvรคnd XMLHttpRequest. Denna kod sรคkerstรคller att vรฅr applikation fungerar i bรฅde IE 5 och 6 och moderna webblรคsare.
- โxmlhttp.onreadystatechange=functionโฆโ kontrollerar om AJAX-interaktionen รคr klar och statusen รคr 200, och uppdaterar sedan txtName-spannet med de returnerade resultaten.
Steg 4) Testar vรฅr PHP Ajax-applikation
Om du har sparat filen index.php i phptuts/ajax, blรคddra till URL http://localhost/phptuts/ajax/index.php
Skriv bokstaven C i textrutan. Du fรฅr fรถljande resultat.
Exemplet ovan visar konceptet AJAX och hur det kan hjรคlpa oss att skapa rika, interaktiva applikationer.
Modern AJAX med Fetch API
XMLHttpRequest-objektet ovan fungerar fortfarande, men dess ActiveXObject-gren fรถr gamla Internet Explorer behรถvs inte lรคngre. Moderna webblรคsare tillhandahรฅller det promise-baserade Fetch API:et, vilket gรถr samma begรคran med betydligt mindre kod.
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; }); }
Den hรคr versionen gรถr samma jobb: den skickar den inskrivna texten till frameworks.php och placerar svaret i txtName-spannet. Den anvรคnder ocksรฅ encodeURIComponent fรถr att sรคkert undvika inmatningen, och dess lรถfteskedja รคr enkel att utรถka med felhantering med hjรคlp av ett catch-block.


