dimi3 Posté 18 Février 2011 Partager Posté 18 Février 2011 Bonjour, Sur la même page se trouve un formulaire permettant au visiteur de formuler une question, et au-dessous sont affichées les questions posées par les visiteurs et les réponses qu'on leur apporte. Lorsque le visiteur a posé sa question, il laisse la page de son navigateur ouverte en attendant de voir s'afficher sa réponse. Mais il peut attendre longtemps, car si la page n'est pas rafraîchie, il ne voit pas la réponse qui lui a été donnée depuis longtemps. J'ai ajouté donc au code de la page : header ('refresh: 60; url = http://www.mapage.fr') ; Tout va bien tant que le visiteur n'écrit pas sa question ou sa réponse dans le formulaire au moment où le rafraîchissement a lieu ! Sinon il perd tout ce qu'il a entré ! De quelle(s) manière(s) on pourrait parer à cet inconvénient ? J'ai pensé à faire 2 frames : une pour le formulaire et une pour l'affichage des question-réponses, ne rafraîchissant que cette dernière. Est-ce une bonne idée, car je sais que les frames sont très critiquées (Je ne sais pas trop pourquoi d'ailleurs !). Je vous remercie de vos idées. Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 18 Février 2011 Partager Posté 18 Février 2011 Les frames sont critiquées parce qu'elles créent autant de pages qui peuvent être appelées "hors de leur contexte": on peut tomber sur juste la frame de formulaire, ou celle de réponses. De plus, le contenu d'une frame n'est pas référencé dans la page principale. Si tu en as les compétences, tu peux rafraîchir la zone ciblée en AJAX. Lien vers le commentaire Partager sur d’autres sites More sharing options...
dimi3 Posté 18 Février 2011 Auteur Partager Posté 18 Février 2011 Je vous remercie. En utilisant Ajax, j'imagine que j'afficherai les questions et réponses dans un conteneur <DIV>. Peut-on ne rafraîchir qu'un conteneur <DIV> d'une page ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 18 Février 2011 Partager Posté 18 Février 2011 Oui, bien sûr ! C'est là tout l'avantage d'AJAX ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
dimi3 Posté 18 Février 2011 Auteur Partager Posté 18 Février 2011 (modifié) Voici ce que j'ai fait : <html><head><script language="javascript">function marequete(url,cadre) {var XHR = null;if(window.XMLHttpRequest) // FirefoxXHR = new XMLHttpRequest();else if(window.ActiveXObject) // Internet ExplorerXHR = new ActiveXObject("Microsoft.XMLHTTP");else { alert("Votre navigateur ne supporte pas ce script...");return;}XHR.open("GET",url, true);XHR.onreadystatechange = function attente() {if(XHR.readyState == 4) {document.getElementById(cadre).innerHTML = XHR.responseText; }}XHR.send(null); return;}</script></head><body><span onclick="marequete('afficher.php', 'affichage');">Rafraîchir</span><div id="affichage"></div></body></html> Ce code fonctionne bien, mais l'utilisateur doit cliquer pour actualiser. Ca n'a pas d'intérêt car ça ne répond pas à ce que je souhaiterais : un rafraîchissement automatique toutes les tant secondes. Modifié 19 Février 2011 par dimi3 Lien vers le commentaire Partager sur d’autres sites More sharing options...
dimi3 Posté 18 Février 2011 Auteur Partager Posté 18 Février 2011 J'y suis arrivé ainsi : function go(){marequete('afficher.php','affichage');actu = window.setTimeout(go,60000);} </script></head><body onload="go();"> Merci, captain_torche, de m'avoir aiguillé sur Ajax, dont je ne connais pas tous les trésors. Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 18 Février 2011 Partager Posté 18 Février 2011 Pour te simplifier la vie, tu peux aussi utiliser des librairies JavaScript, comme jQuery, Mootools ou Prototype (Ma préférence allant à jQuery, très répandu, bien que j'avoue ne pas avoir testé Mootools), qui simplifient (entre autres) les appels AJAX. Lien vers le commentaire Partager sur d’autres sites More sharing options...
dimi3 Posté 18 Février 2011 Auteur Partager Posté 18 Février 2011 Merci encore pour votre attention et votre temps. jQuery fera l'objet de ma prochaine étude... le temps de trouver un bon bouquin ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant