cs_pascalv
Messages postés3Date d'inscriptionsamedi 18 mai 2002StatutMembreDernière intervention19 août 2011
-
19 août 2011 à 10:38
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 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...
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 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.