Bonjours, je débute dans ajax, et j´aimerai faire un chat sur (ma) mesure, je sais qu´il existe déjà pleins de scripts sur le web mais ils sont toujours trop compliqués pour moi ou ne ressemblent pas à ce que je souhaite.
J´ai déjà débuté le script, je me connecte au serveur via la page xml traitement.php (instance.open(´GET´, ´traitement.php´, true)), je récupere les données dans ma page au format xml, mais j´aimerai que cela se rafraichisse, afin de récuperer les données toutes les x secondes, j´ai donc fait un setInterval() mais je ne sait pas comment faire pour que ça s´applique à instance.onreadystatechange
Voila le code complet :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd
">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title></title>
<script type="text/javascript">
var xhr; // on déclare l´instance xhr
//var timer1 = setTimeout("requeteLireFichier()", 0);
var timer1 = setInterval("requeteLireFichier()", 5000);
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.onreadystatechange = function()
{
if (xhr.readyState == 4)
{
var docXML= xhr.responseXML;
var items = docXML.getElementsByTagName("objet");
var dates = docXML.getElementsByTagName("date");
var donnees = docXML.getElementsByTagName("donnee");
//on fait juste une boucle sur chaque élément "donnee" trouvé
for (i=0;i<items.length;i++)
{
document.write((donnees.item(i).firstChild.data));
document.write(´ ´);
document.write((dates.item(i).firstChild.data));
document.write(´<br />´);
}
document.write(´<hr />´);
}
}
function requeteLireFichier() {
//On se connecte à traitement.php avec la méthode get
xhr.open(´GET´, ´traitement.php´, true);
xhr.send(null);
}
</script>
</head>
<body>
</body>
</html>
Merci d´avance pour vos réponses
voit les biens fais de setTimeout() et clearTimeout() ![]()
J´ai essayé dans un premier temps setTimeout() mais pour que cela se recharge régulierement, j´ai utilisé setInterval(requeteLireFichier(), 5000)
PS :
function requeteLireFichier() {
//On se connecte à traitement.php avec la méthode get
xhr.open(´GET´, ´traitement.php´, true);
xhr.send(null);
}
Personne ??
J´ai vu plein de monde frimer parce que soit disant ils connaissaient la nouvelle "technologie", AJAX et là quand je demande un truc simple, personne ne peut me répondre ?
Je t´ai donné une reponse
setTimeout("tafontion()", millissecondes);
Et je t´ai répondu que j´avais utilisé setInterval qui fonctionne de la même façon, ma fonction est bien renouvellée mais ça ne marche toujours pas, j´aimerais donc savoir ce qu´il faut faire pour que ça soit readyState qui se remette à 0 pour refaire la fonction onreadystatechange
Ben quand t´en dis plus, ça aide...
il faudrait mettre l´evenement xhr.onreadystatechange et la fonction requeteLireFichier() dans une seul et meme fonction
AJAX=/=httprequest
L´utilisation d´AJAX implique l´utilisation d´un langage portable, le XML...
As-tu pensé à détruire l´objet xhr ?
On dirait que non.
S´initier à la POO ne serait pas un luxe. ;)
Pas besoin de XML pour caracteriser de l´ajax.
"Malgré tout, des technologies supplémentaires peuvent être employées côté serveur, notamment pour la gestion des données au format XML", c´est un plus, et c´est indegnable mais on peut s´en passer.
Bon apres relecture, je me contrids un tout petit peu mais je je continue a penser que xml n´est pas obligatoire
J´ai également lu dans plusieurs docs qu´Ajax n´implique pas obligatoirement l´utilisation d´XML, c´est mieux, c´est plus portable, mais pas obligatoire. Parfois, cel peu même alourdir les traitements.
Alors ça ne s´appelle plus de l´Ajax...
Vous me donnez envie de revenir.
Je suis en manque de créations... ![]()
Alors nombreux sont les livres et les docs qui utilisent cette appellation à tord (Ajax en pratique chez CampusPress par exemple)
Et je me sens puriste.
"Jusqu´à présent nous n´avons donc pas fais d´AJAX mais juste de l´utilisation de XmlHttpRequest. Ce qui n´est pas très grave mais qui fera hurler les puristes.
ne vous amusez pas à dire que vous faites de l´AJAX dans ces cas là ;) ."
Dixit developpez.com
Ce n´est qu´un site internet dont les tutoriaux sont fait dans la très grande majorité par des bénévoles.
Moi je te parles de bouquins écrits par des professionnels, des profs d´université, ...
Ce n´est pas parce que eux font une erreur que nécessairement... ^^
Et puis sfacile de bouffer un mot.
http://fr.wikipedia.org/wiki/Asynchronous_JavaScript_And_XML
Ne serait-ce que sur wikipedia ou le blog de olivier sorel ^^
Sincèrement, tu sais quoi ? OSEF
Sérieux, qu´est-ce que ça peut te foutre qu´on utilise le terme AJAX même si les données ne sont pas transférées sous forme XML
J´appelle ça couper les cheveux en quatre. Polémiquer, juste pour le plaisir d´étaler sa science.
Si c´est tout ce que tu as a apporter à ce forum, ce n´est pas la peine de venir, des comme toi, il en passe toutes les semaines.
volcan_moisi = watza ? (cf "sfacile") ![]()
Judicieuse observation !
Watza s´était calmé puis avait disparu de la circulation, on peu effectivement se poser la question de son retour sous un autre pseudo. SI c´est le cas, l´accalmie fut de courte durée ![]()
Salut, comme je l´ai dit, je débute et je ne suis pas fort en js et encore moins en POO, pour les "puristes", je ne comprend pas trop la différence entre le xmlhttprequest et AJAX (AJAX = combinaison de languages mais généralement, xmlhttprequest ne s´utilise pas tout seul), d´ailleurs j´ai mis du xml dans un fichier externe donc je me suis permis de dire que je faisais du AJAX.
J´ai déjà essayer de mettre xhr.onreadystatechange dans une fonction mais ça ne fonctionne pas.
Détruire l´objet xhr semble être une solution logique, par contre, quelqu´un pourait-il m´indiquer comment faire ?
Merci de vos précédantes et futures réponses ![]()