Actualisation d'une div en ajax

Petit nouveau ! | 6 Messages

16 juin 2009, 15:33

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:

Petit nouveau ! | 6 Messages

19 juin 2009, 10:13

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.

Petit nouveau ! | 2 Messages

28 juil. 2009, 22:53

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 ?

Mammouth du PHP | 2937 Messages

29 juil. 2009, 08:59

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). ;)

Petit nouveau ! | 2 Messages

29 juil. 2009, 12:38

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). ;)

ravioli
Invité n'ayant pas de compte PHPfrance

05 mars 2013, 20:53

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.