Page 1 sur 1

Actualisation d'une div en ajax

Posté : 16 juin 2009, 15:33
par mask
Bonjour à tous et à toutes,

Je souhaite actualiser le contenu d'une div toutes les x secondes, j'ai écris un script mais celui ci ne fonctionne pas ... J'ai l'impression que mes fonctions Javascript ne sont pas appelées.

Voici le code en question :

Code : Tout sélectionner

<?php session_start(); if (!isset($_SESSION['add'])) { $_SESSION['add']=1; echo 'isset ceer'; } function add () { echo 'Passage par add <br />'; $_SESSION['add']=$_SESSION['add']+1; echo''.$_SESSION['add'].''; } echo ' <head> <link rel="stylesheet" href="style.css"/> <script type="text/javascript"> var xhr; if (window.XMLHttpRequest) // Objet de la fenêtre courant { xhr = new XMLHttpRequest(); // Firefox, Safari, ... } else if (window.ActiveXObject) // Version Active { xhr = new ActiveXObject("Microsoft.XMLHTTP"); // Internet Explorer } function refresh(delay,test,url) { document.write("Passage par refresh"); loadHtm(test,url); timer = setTimeout("refresh(\'1000\',\'"+test+"\',\'page_acceuil_eleve.php\')",delay); } function loadHtm(test,url) { document.write("Passage par loadhtm"); var XHR = new XHRConnection(); XHR.setRefreshArea(test); XHR.sendAndLoad(url, "POST"); return true; } </script> </head>'; echo'<body onload="refresh(10,test,page_acceuil_eleve.php)"> <div id="test">'; add(); echo'</div> </body>'; ?>
Pour tester si l'actualisation se fait j'incrémente une variable de session $_SESSION['add'], elle s'incrémente correctement uniquement si j'actualise la page (ce que je ne souhaite pas). Les document.write qui se trouvent dans mes 2 fonctions JS n'affiche jamais leur texte à l'écran ...

Voila voila je suis la pour toutes questions, merci de votre aide.

EDIT : c'est maintenant le contraire mes fonctions JS sont appelées mais plus ma fonction php ... :cry:

Posté : 19 juin 2009, 10:13
par mask
Créer un fichier php avec ce code :

Code : Tout sélectionner

<html> <head> <title>Test</title> <script text="javascript"> function timer() { comp=(setTimeout("go()",5000)); } function getXhr(){ var xhr = null; if(window.XMLHttpRequest) // Firefox et autres xhr = new XMLHttpRequest(); else if(window.ActiveXObject){ // Internet Explorer try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); xhr = false; } return xhr } function go() { var xhr = getXhr() // On défini ce qu'on va faire quand on aura la réponse xhr.onreadystatechange = function() { // On ne fait quelque chose que si on a tout reçu et que le serveur est ok if(xhr.readyState == 4 && xhr.status == 200) { var html = xhr.responseText; document.getElementById('cible').innerHTML = html; } } xhr.open("GET","essai.php",true); xhr.send(null); setTimeout('go()',5000); } </script> </head> <body onload='timer()'> <div id="cible"> <?php echo date('l jS \of F Y h:i:s A'); ?> </div> </body> </html>
Créer un fichier essai.php avec comme code :

Code : Tout sélectionner

<?php echo date('l jS \of F Y h:i:s A'); ?>
Bon et bien après quelques jours de recherche et à l'aide de developpez.com j'ai réussi à développer ce script je le mets à la disposition de tous.

La div s'actualise toutes les 5 secondes et affiche l'heure et la date.

Have Fun, Mask.

Posté : 28 juil. 2009, 22:53
par Kosty
Je viens de tester ton code, mais sans succès... après avoir cherché dse plombes sur google pour actualiser une div...

Il n'y a pas d'erreur dans ton code ?

Posté : 29 juil. 2009, 08:59
par Victor BRITO
Il n'y a pas d'erreur dans ton code ?
Juste au niveau de la balise ouvrante script : l'attribut n'est pas text, mais type, le type MIME étant text/javascript.

Code : Tout sélectionner

<script type="text/javascript">
Et puis, précaution élémentaire pour tester de l'Ajax, il faut s'assurer que JavaScript est activé et qu'il existe un fichier PHP pour la couche serveur (sinon, c'est sûr que le test est voué à l'échec). ;)

Posté : 29 juil. 2009, 12:38
par Kosty
Merci pour ta réponse.

D'une part je confirme l'erreur dans la balise.

Ensuite, en testant, cela s'actualise une seule fois, et les fois suivantes, lorsque j'actualise, l'heure revient à la première actualisation.

[exemple : installation du script à 12h28'05 > actualisation auto à 12h28'10 > ensuite plus rien

- si j'actualise à 12h29'00 > retour auto 5'' + tard à 12h28'10]

Un rapport avec ceci ? :
précaution élémentaire pour tester de l'Ajax, il faut s'assurer que JavaScript est activé et qu'il existe un fichier PHP pour la couche serveur (sinon, c'est sûr que le test est voué à l'échec). ;)

Re: Actualisation d'une div en ajax

Posté : 05 mars 2013, 20:53
par ravioli
Bonsoir,

Je n'ai pas testé le script, mais peut-t'on
ce passer des setTimeout et déclancher le
raffraichement par un Onclick ?

Merci de me faire vos propositions.

A vous lire.