Pb de refresh sur ajax
Résolu
panthere31
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
panthere31 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
panthere31 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
hello à tous,
voilà je sèche sur un truc et je pige pas trop pourquoi...
dans une div est affiché un fil d'actu 1 ou 2 selon click ou chargement de la page
il y a egalement possibilité de passer de l'un à l'autre... lorsque je clique sur 2 j'ai bien mon fil d'actu qui doit se recharger ttes les X secondes mais au rechargement il revient sur le premier fil d'actu... :'(
il rappelle pas le dernier paramètre passé dans lors de l'appel de la fonction (si je pige bien).
Voici mon script :
au chargement :
et les liens :
pas de pb sur les div
si qq un a une eclaircie à me proposer !
Merci
voilà je sèche sur un truc et je pige pas trop pourquoi...
dans une div est affiché un fil d'actu 1 ou 2 selon click ou chargement de la page
il y a egalement possibilité de passer de l'un à l'autre... lorsque je clique sur 2 j'ai bien mon fil d'actu qui doit se recharger ttes les X secondes mais au rechargement il revient sur le premier fil d'actu... :'(
il rappelle pas le dernier paramètre passé dans lors de l'appel de la fonction (si je pige bien).
Voici mon script :
<script language="javascript" type="text/javascript"> function actu(quoi) { if (window.XMLHttpRequest) xhr = new XMLHttpRequest(); else if (window.ActiveXObject) xhr = new ActiveXObject('Microsoft.XMLHTTP'); else alert('JavaScript : votre navigateur ne supporte pas les objets XMLHttpRequest...'); xhr.open('GET','filactu.php?rss=' + quoi,true); xhr.onreadystatechange = function(){ if (xhr.readyState == 4) { document.getElementById("lesnews",true).innerHTML=xhr.responseText; // ici sa s'incrute dans la div <div id="lesnews"></div> mais peut etre <td id="page"> ... Ici c'est L'id l'important var timer=setTimeout("actu('" + quoi + "')",10000); // rafraichie toute les 25secs } } xhr.send(null); } </script>
au chargement :
<body onload="javascript: actu('1');">
et les liens :
<a href="javascript: actu('1');">actu 1</a> - <a href="javascript: actu('2');">2</a>
pas de pb sur les div
si qq un a une eclaircie à me proposer !
Merci
A voir également:
- Pb de refresh sur ajax
- Comment refresh son pc - Guide
- Auto refresh - Télécharger - Divers Web & Internet
- Refresh dns - Guide
- Erreur ajax ✓ - Forum Javascript
- Yggtorrent erreur ajax ✓ - Forum Javascript
4 réponses
Fais une fonction qui se charger de changer de flux et une autre qui se charge de le rafraichir. Il faut stocker le numéro du flux dans une variable accessible par les deux fonctions, donc une variable externe à ces deux fonctions.
Voici la structure :
Voici la structure :
var numeroFlux = 1; // Par défaut, ça sera le premier function changerFlux(numero) { numeroFlux = numero; rafraichir(); } function rafraichir() { // ... }
Il y a deux fonctions :
La fonction changerFlux(numero) : elle se charge de modifier la variable numeroFlux accessible par les deux fonctions, et elle lance le rafraichissement pour le nouveau flux (ce n'est pas cette fonction qui fait la requête AJAX, c'est la deuxième (on appelle donc la deuxième dans la première))
La fonction rafraichir() : elle rafraichis le bon flux grâce à la variable numeroFlux.
La fonction changerFlux(numero) : elle se charge de modifier la variable numeroFlux accessible par les deux fonctions, et elle lance le rafraichissement pour le nouveau flux (ce n'est pas cette fonction qui fait la requête AJAX, c'est la deuxième (on appelle donc la deuxième dans la première))
La fonction rafraichir() : elle rafraichis le bon flux grâce à la variable numeroFlux.
Voici ce que j'ai là :
je dois avoir faux dans mon raisonnement....
<script language="javascript" type="text/javascript"> function changerFlux(numero) { numeroFlux = numero; actu(numeroFlux); } function actu(quoi) { var quoi = (quoi == null) ? "club" : quoi; if (window.XMLHttpRequest) xhr = new XMLHttpRequest(); else if (window.ActiveXObject) xhr = new ActiveXObject('Microsoft.XMLHTTP'); else alert('JavaScript : votre navigateur ne supporte pas les objets XMLHttpRequest...'); xhr.open('GET','filactu.php?rss=' + quoi,true); xhr.onreadystatechange = function (){ if (xhr.readyState == 4) { document.getElementById("lesnews",true).innerHTML=xhr.responseText; // ici sa s'incrute dans la div <div id="lesnews"></div> mais peut etre <td id="page"> ... Ici c'est L'id l'important var timer=setTimeout("actu('" + quoi + "')",10000); // rafraichie toute les 25secs } } xhr.send(null); } </script>
je dois avoir faux dans mon raisonnement....
Tu as oublié de déclaré la variable en dehors des deux fonctions.
Pour le setTimeout, je le mettrais plutôt à l'extérieur de la fonction.
Pour le setTimeout, je le mettrais plutôt à l'extérieur de la fonction.
var numeroFlux = 1; var timer; function changerFlux(numero) { numeroFlux = numero; actu(); } function actu() { var quoi = (numeroFlux == null) ? "club" : numeroFlux; if (window.XMLHttpRequest) xhr = new XMLHttpRequest(); else if (window.ActiveXObject) xhr = new ActiveXObject('Microsoft.XMLHTTP'); else alert('JavaScript : votre navigateur ne supporte pas les objets XMLHttpRequest...'); xhr.open('GET','filactu.php?rss=' + quoi,true); xhr.onreadystatechange = function () { if (xhr.readyState == 4) { document.getElementById("lesnews",true).innerHTML = xhr.responseText; } } xhr.send(null); } window.onload = function() { timer = setTimeout("actu();",10000); };
voici donc le code final :
la div mise à jour est nommée lesnews
Encore merci pour cette aide !!
<script language="javascript" type="text/javascript"> var numeroFlux = 1; var timer; function changerFlux(numero) { numeroFlux = numero; actu(); } function actu() { var quoi = (numeroFlux == null) ? "1" : numeroFlux; if (window.XMLHttpRequest) xhr = new XMLHttpRequest(); else if (window.ActiveXObject) xhr = new ActiveXObject('Microsoft.XMLHTTP'); else alert('JavaScript : votre navigateur ne supporte pas les objets XMLHttpRequest...'); xhr.open('GET','filactu.php?rss=' + quoi,true); xhr.onreadystatechange = function () { if (xhr.readyState == 4) { document.getElementById("lesnews",true).innerHTML = xhr.responseText; } } xhr.send(null); } window.onload = function() { timer = setInterval("actu();",900000); }; </script>
la div mise à jour est nommée lesnews
Encore merci pour cette aide !!
j'aimerai supprimer ce pb