Du Ajax plein les yeux... XmlHttpRequest inside
Par Yves Tannier le samedi, juillet 2 2005, 14:00 - Le codage - Lien permanent
La rumeur court sur la planète Webdesign, il paraît que le futur des applications Web passera peut-être par "Ajax". Mais que se cache t'il donc derrière ce nom de produit ménager ?! En tout cas mon avis est fait après quelques lectures non dénuées d'intérêts et quelques mises en applications des exemples donnés : c'est sans doute vrai qu'une petite révolution est en marche !
Google Mail ou encore Google Suggest, par exemple, sont déjà basés sur ce système et le nombre de sites qui utilisent cette technologie ne fait qu'augmenter de jour en jour.
C'est vrai qu'à la vue des possibilités offertes par ce système on peux imaginer beaucoup de mise en pratique. Avant d'en arriver là, voici un article que Bruno m'avait signalé et qui résume très bien le mode de fonctionnement des applications Web utilisant cette technologie. Si vous n'êtes pas un parfait bilingue, je vous conseille quand même de vous attarder sur le schéma explicatif...
Après avoir lu cet article, vous voudrez bien évidement connaître toutes les possibilités offertes par Ajax, et vous y essayer. C'est là qu'un petit tour dans la partie "demo" du site consacré à OpenRico - Une classe justement à cette fabuleuse technologie - vous permettra définitivement d'être convaincu que vos applications vont s'enrichir de cette nouveauté !
De mon côté, après l'avoir très modestement éprouvée sur le moteur de recherche par référence du site de La Crosse Technology, j'ai récidivé sur Theatre-contemporain.net.
Je me suis déjà attaqué à la page des éditeurs. Pour cet exemple, j'ai utilisé la classe découverte sur ce blog de qwix trouvé par hasard et qui semble être le fait d'un blogueur bisontin. Je vous livre donc tel quel, brut de décoffrage, le bout de source qui va bien :
Quelques extrait de la page qui contient la liste nominative :
// appel à la classe
// fonction javascript
<script type="text/javascript" language="javascript">
function chargeFichier(id) {
// Création de l'objet
var XHR = new XHRConnection();
// Zone a remplir
XHR.setRefreshArea('zonedetail'+id);
// Chargement de la page
XHR.sendAndLoad("details-editeur.php?idedit="+id, "GET");
return true;
}
</script>
<?php // boucle depuis la base de données
while ($row = $result->fetchRow()) {
$country =& $db->getOne("SELECT ".$lang." FROM ".$table_paysth." WHERE id='".$row['country']."' ");
echo "<li><a href=\"javascript:;\" onclick=\"chargeFichier(".$row['id'].");\">".$row['organisation']."</a> - ".$row['city']." (".$country.")";
echo "<div id=\"zonedetail".$row'id'."\"></div>";
echo "</li>";
}
... ect
?>
Extrait de la page qui contient les détails :
<?php
echo "<div class=\"maisonseditions\">";
echo "<div style=\"font-size: 10px; text-align: right;\"><a href=\"javascript:;\" onclick=\"document.getElementById('zonedetail".$row'id'."').innerHTML = '';\">x
fermer</a></div>";
... ici les infos détaillées ....
echo "</div>";
?>
Pour être sur que tout le monde à compris : la page editeurs.html ne charge que la liste nominative. Ensuite chaque clic sur le nom d'un éditeur fait appel au données le concernant. Léger et efficace, seulement quelques octets de données sont appelés à chaque fois depuis le serveur.
Sur ma lancée, j'ai aussi utilisé Ajax sur la page du calendrier afin d'éviter de charger les importantes et longues listes déroulantes du moteur de recherche avancé à chaque chargement de la page "calendrier" (couplé à un système de cache c'est bien rapide).
Alors pas convaincu par l'intitulé de l'article cité plus haut : "Ajax: A New Approach to Web Applications" ?
Commentaires
Salut,
l'utilisation de "Ajax" devient de plus en plus courante, mais il n'est pas facile pour les nouveaux initiés du site dynamique d'utiliser ces fonctions ou technologies. Je trouve pour cela ton blog fort intéressant. Mais te serait-il possible d'y joindre un fichier zip contenant les éléments nécessaires à un point de départ pour un newbie, qui à l'heure actuelle se demande où il va placer ces lignes et quels sont les termes et mots qu'il devra modifier pour son utilisation personnel.
Merci pour ton travail.
Salut,

Voici un site qui devrait répondre correctement à tes questions : xhrconnection.sutekidane....
C'est le site de la classe que j'utilise dans l'exemple ci dessus. Tu y trouveras des exemples très concrets et simple d'utilisation... A bientôt
++
PS : en plus complet il y a aussi openrico.org/rico/home.pa...
<script type="text/javascript">
function include_page(page,id)
{
var texte = '';
var xhr; // on déclare l'instance
if (window.XMLHttpRequest) xhr = new XMLHttpRequest(); // Firefox, Opera, Konqueror, Safari, ...
else if (window.ActiveXObject) xhr = new ActiveXObject('Microsoft.XMLHTTP'); // Internet Explorer
else alert('JavaScript : votre navigateur ne supporte pas les objets XMLHttpRequest...'); // Navigateur ancien
xhr.open('POST',page,true);
xhr.onreadystatechange = function()
{
if (xhr.readyState == 4)
{
if (document.getElementById) document.getElementById(id).innerHTML = xhr.responseText;
}
}
xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
var data = 'texte='+escape(texte);
xhr.send(data);
}
</script>
Voila un script simple d'utilisation , on le pose entre les balise htlm , pour on appelle la fonction :
include_page('page a appeler(url)','id du div ou faire apparaitre');
les balise pour positioner le resultat sont :
<div id="id du div ou faire apparaitre"></div>
Ma question , pourquoi se script supprime mes script ( type javascript ) de mes pages appeler .
exactement la même question
"pourquoi se script supprime mes script ( type javascript ) de mes pages appeler ." :s
ce que vous dite est joli et c simple a comprendre. mais il ya un point pour le quel je voi pas la solution :
_ ficher html contenant ajax __
<script> ....... document.getElementById("main").innerHTML = xhr.responseText;........
</script>
<body>
<div id="main">.....</div>
_ fichier dynamique __
<?php
........... echo "<div id='sousMain'>....</div>";.... ?>
question __
comment acceder a sousMain apartir du fichier html de depart ?
j'est essayer mais jé pas reussit
thx pour vos reponce
Bonjour,
J'ai le même problème que d'autres ont cité précédemment
En utilisant innerHTML, je rafraichis un div en y insérant des pages HTML de mon choix, sans problème. Sauf lorsque les pages appelées contiennent du javascript, la page s'affiche mais le code javascript ne fonctionne pas. Même un simple alert('Allo!'); ne s'affiche pas
Est-ce une limitation connue de javax?
Merci
Je n'utilise plus XHRconnexion. Il faudrait que je réessaye avec. Il est normalement possible de réinterpréter le code qui est renvoyé. Le plus évident étant de renvoyer une réponse en XML qui sera facilement interprétée.