Tutoriel PHP Ajax avec exemple
โก Rรฉsumรฉ intelligent
Ajax en PHP permet ร une page web d'รฉchanger de petites quantitรฉs de donnรฉes avec le serveur et de mettre ร jour une partie de la page sans rechargement complet. Ce tutoriel prรฉsente la crรฉation d'une recherche en direct, en expliquant l'approche classique XMLHttpRequest et l'alternative moderne Fetch API.

Qu'est-ce qu'Ajax ?
AJAX signifie Asynchrone Javascรฉnario XML est une technologie qui rรฉduit les interactions entre le serveur et le client. Elle y parvient en mettant ร jour uniquement une partie de la page web au lieu de la page entiรจre. Les interactions asynchrones sont initiรฉes par JavaScript. L'objectif d'AJAX est d'รฉchanger de petites quantitรฉs de donnรฉes avec le serveur sans rechargement de la page.
Javascรฉnario est un langage de script cรดtรฉ client. Il est exรฉcutรฉ cรดtรฉ client par les navigateurs web qui le prennent en charge. JavaScรฉnario. JavaLe code de script ne fonctionne que dans les navigateurs dotรฉs JavaScript activรฉ.
XML XML est l'acronyme de Extensible Markup Language (langage de balisage extensible). Il est utilisรฉ pour encoder des messages dans des formats lisibles par l'homme et par la machine. Il est similaire ร HTML, mais permet de crรฉer ses propres balises personnalisรฉes. Pour plus de dรฉtails sur XML, consultez l'article surโฆ XML.
Pourquoi utiliser AJAX ?
- Il permet de dรฉvelopperping Des applications web riches et interactives, tout comme les applications de bureau.
- La validation peut รชtre effectuรฉe pendant que l'utilisateur remplit un formulaire, sans le soumettre. Ceci est possible grรขce ร la saisie semi-automatique. Les mots saisis par l'utilisateur sont envoyรฉs au serveur pour traitement, et le serveur renvoie des mots-clรฉs correspondants.
- Il peut รชtre utilisรฉ pour remplir une liste dรฉroulante en fonction de la valeur d'une autre liste dรฉroulante.
- Les donnรฉes peuvent รชtre rรฉcupรฉrรฉes depuis le serveur et seule une partie de la page peut รชtre mise ร jour sans avoir ร recharger la page entiรจre. Ceci est particuliรจrement utile pour les sections de page web qui chargent des รฉlรฉments tels que :
- Tweets
- Commentaires
- Utilisateurs visitant le site et autres donnรฉes en temps rรฉel similaires.
Comment crรฉer une application PHP Ajax
Nous allons crรฉer une application simple qui permet aux utilisateurs de rechercher des frameworks PHP MVC populaires.
Notre application comportera une zone de texte oรน les utilisateurs saisiront les noms des frameworks.
Nous utiliserons ensuite AJAX pour rechercher une correspondance, puis nous afficherons le nom complet du framework juste en dessous du formulaire de recherche.
รtape 1) Crรฉation de la page d'index
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>
ICI,
- "onkeyup="showName(this.value)"" exรฉcute le JavaLa fonction de script showName s'exรฉcute ร chaque fois qu'une touche est saisie dans la zone de texte. Cette fonctionnalitรฉ s'appelle la saisie semi-automatique.
รtape 2) Crรฉation de la page des frameworks
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; ?>
รtape 3) Crรฉation du script JS
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(); }
ICI,
- La condition ยซ if (str.length == 0) ยป vรฉrifie la longueur de la chaรฎne. Si elle est รฉgale ร 0, le reste du script n'est pas exรฉcutรฉ.
- ยซ if (window.XMLHttpRequest)โฆ ยป Les versions 5 et 6 d'Internet Explorer utilisent ActiveXObject pour l'implรฉmentation AJAX. D'autres versions et navigateurs tels que Chrome et Firefox Utilisez XMLHttpRequest. Ce code garantit le bon fonctionnement de notre application sous Internet Explorer 5 et 6, ainsi que sous les navigateurs modernes.
- ยซ xmlhttp.onreadystatechange=functionโฆ ยป vรฉrifie si lโinteraction AJAX est terminรฉe et si le statut est 200, puis met ร jour la balise span txtName avec les rรฉsultats renvoyรฉs.
รtape 4) Tester notre application PHP Ajax
En supposant que vous ayez enregistrรฉ le fichier index.php dans phptuts/ajax, accรฉdez ร URL http://localhost/phptuts/ajax/index.php
Saisissez la lettre C dans la zone de texte. Vous obtiendrez les rรฉsultats suivants.
L'exemple ci-dessus illustre le concept d'AJAX et comment il peut nous aider ร crรฉer des applications riches et interactives.
AJAX moderne avec l'API Fetch
L'objet XMLHttpRequest ci-dessus fonctionne toujours, mais sa version ActiveXObject pour les anciennes versions d'Internet Explorer n'est plus nรฉcessaire. Les navigateurs modernes proposent l'API Fetch, basรฉe sur les promesses, qui effectue la mรชme requรชte avec beaucoup moins de code.
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; }); }
Cette version remplit la mรชme fonction : elle envoie le texte saisi ร frameworks.php et place la rรฉponse dans lโรฉlรฉment span txtName. Elle utilise รฉgalement encodeURIComponent pour รฉchapper correctement lโentrรฉe, et sa chaรฎne de promesses est facilement extensible avec une gestion des erreurs via un bloc catch.


