Aide sur amélioration script

cs_pascalv Messages postés 3 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 19 août 2011 - 19 août 2011 à 10:38
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 - 19 août 2011 à 13:40
Bonjour à vous tous,
J'ai récupéré un script Ajax, qui permet d'actualiser une "div" et seulement elle.
function timer(div, page){	
comp=(setTimeout("go()",0));
}
 
function getXhr(){
var xhr = null; 			
if(window.XMLHttpRequest) 
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('DIV_A_ACTUALISER').innerHTML = html;
// DIV_A_ACTUALISER: C'est ici que l'on précise le nom de la div à actualiser 
 }
}
xhr.open("GET",'PAGE.PHP',true);
// PAGE.PHP: C'est ici ou l'on précise le nom du fichier.
xhr.send(null);
setTimeout('go()',2500000);
}

Il suffit d'appeler la fonction ainsi :

javascript:timer();


Ce que je voudrait c'est de pouvoir donner les infos depuis l'appel Javascript pour utiliser ce script pour toutes les DIVs et PAGEs.
Et pas seulement : "DIV_A_ACTUALISER" et "PAGE.PHP"
Mais les préciser dans l'appel Javascript
javascript:timer('Div2', 'page2.php');

Merci de votre aide
J'espère avoir été assez clair...

1 réponse

Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
19 août 2011 à 13:40
Bien le bonjour,

je pense que j'ai saisi, mais je ne garantie rien ;o)

<html>
<head>
<script type="text/javascript">
// Vraiable de l'interval
var inter=null;
// Variable à supprimer, uniquement la pour le débuggage.
var countForDebug = 0;

/**
* Déclenche un timer sur la page url et mets à jour la div idComp
* @param url: url à atteindre.
* @param idComp : identifiant du composant à mettre à jour.
*/
function timer(url, idComp){	
// Déclenche un interval.
// dans mon cas j'ai réglé sur 1000 (soit une seconde, 2500000, ça fait beaucoup...... )
inter = setInterval('navigate("'+url+'", "'+idComp+'")',1000);
}
 
/**
* Retourne une instance pour les requête ajax.
*/
function getXhr(){
var xhr = null; 			
if(window.XMLHttpRequest) 
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
}

/**
* Fonction de navigation ajax.
* @param url : url à atteindre.
* @param componentId : identifiant du composant à mettre à jour.
*/
function navigate (url, componentId){
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;
// Pour mes besoins, j'ai rajouter un compteur afin de m'assurer que la div se rafraîchissait.
// il faut donc supprimer: + " having count= " +(countForDebug++)
document.getElementById(componentId).innerHTML = html + " having count= " +(countForDebug++);
}
}
xhr.open("GET",url,true);
xhr.send(null);
}

/**
* Sur le déchargement de la page, il faut tuer le timer.
*/
window.onunload=function(){
clearInterval(inter);	
}
</script>
</head>





</html>


ceci ne conviendrait-il pas, l'appel à la méthode timer se fait avec deux paramètres: le premier est l'url à atteindre la seconde est l'identifiant du composent à mettre à jour.
Ensuite pour d'autre besoin (sans timer... par exemple), l'utilisation se fait via la méthode navigate qui accepte les deux même paramètres que la méthode timer.



[o-_-o]
0
Rejoignez-nous