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.

  • (I.e. Qu'est-ce qu'Ajax ? Ajax, asynchrone JavaScript et XML permettent de mettre ร  jour une partie d'une page en รฉchangeant des donnรฉes avec le serveur sans rechargement complet.
  • | Pourquoi l'utiliser : Ajax permet de bรฉnรฉficier de fonctionnalitรฉs riches, similaires ร  celles des applications de bureau, telles que la saisie semi-automatique, la validation en direct et les listes dรฉroulantes dรฉpendantes.
  • ๏ธ Client et serveur : JavaLe script s'exรฉcute dans le navigateur et appelle un script PHP, qui renvoie uniquement les donnรฉes nรฉcessaires ร  la mise ร  jour de la page.
  • ๐Ÿ” Recherche en direct: Un gestionnaire d'รฉvรฉnement onkeyup envoie chaque frappe au clavier ร  un script PHP qui renvoie instantanรฉment les noms des frameworks correspondants.
  • (I.e. Requรชte XMLHttp : L'approche classique crรฉe un objet XMLHttpRequest et lit responseText une fois la requรชte terminรฉe.
  • (I.e. API Fetch : Le code moderne remplace XMLHttpRequest par la fonction fetch basรฉe sur les promesses pour des requรชtes plus propres et plus lisibles.
  • ๐Ÿค– Assistance IA : Les outils d'IA peuvent convertir l'ancien code XMLHttpRequest en fetch ou axios et aider ร  dรฉboguer les requรชtes Ajax dรฉfaillantes.

PHP Ajax

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

Test de notre application PHP Ajax

Saisissez la lettre C dans la zone de texte. Vous obtiendrez les rรฉsultats suivants.

Test de notre application PHP Ajax

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.

FAQ

Une requรชte synchrone bloque le navigateur jusqu'ร  la rรฉponse du serveur, figeant ainsi la page. Une requรชte asynchrone s'exรฉcute en arriรจre-plan ; la page reste donc rรฉactive et se met ร  jour dรจs rรฉception des donnรฉes. Ajax utilise le modรจle asynchrone.

Avec `fetch`, transmettez un deuxiรจme argument dรฉfinissant la mรฉthode de la requรชte POST et un corps, puis lisez `$_POST` en PHP. Avec `XMLHttpRequest`, appelez `open('POST', url)`, dรฉfinissez l'en-tรชte `Content-Type` et envoyez les donnรฉes encodรฉes.

CORS (Cross-Origin Resource Sharing) bloque les requรชtes du navigateur vers un domaine diffรฉrent, sauf si le serveur envoie l'en-tรชte Access-Control-Allow-Origin appropriรฉ. Ajoutez cet en-tรชte cรดtรฉ PHP ou appelez une fonction de mรชme origine. URL rรฉparer.

Oui. Collez le code XMLHttpRequest, et l'IA peut le rรฉรฉcrire en utilisant l'API fetch basรฉe sur les promesses ou axios, ajouter la gestion des erreurs et conserver le mรชme comportement. Testez le rรฉsultat, car la gestion des rรฉponses diffรจre lรฉgรจrement.

Oui. Partagez le code de requรชte et la console du navigateur ou l'erreur rรฉseau, et l'IA pourra dรฉtecter une erreur. URL, un blocage CORS, un paramรจtre manquant ou une erreur serveur, puis suggรฉrez la solution ร  essayer.

Rรฉsumez cet article avec :