Bonjour,

Je suis en train de coder une application qui doit afficher des informations toutes les 10s dans une page html.

J'ai donc utilisé XMLHttpRequest pour faire appel à une page php qui va chercher les informations et les renvoi sous forme d'un XML qui sera traité puis les valeurs écrits dans le html.

Le problème est que dès lors que la fonction ajax est appelée, l'intervalle de 10s n'est pas respecté. Du coup les zones sont re-loadées sans arrêt jusqu'à saturation du navigateur car au bout d'un moment, les réponses sont plus lentes que les appels.

Voici mon code. Dans le fichier html, j'appelle ma fonction comme ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<script type="text/javascript" src="templates/{$TPL}/js/stats.js" /></script>
                        <script type="text/javascript">
                        	setInterval("getStats()", 10000);
                        </script>
Dans mon stats.js:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
function getStats()
{
    var xhr=null;
 
    if (window.XMLHttpRequest) {//on creer l'object ajax pour firefox 
        xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) //pour IE
    {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
 
	//fonction qui va recuperer le resultat le l'appel php
    xhr.onreadystatechange = function() { 
		if(xhr.readyState == 4 )
		{
			UpdateTextBox(xhr);
		}
 
	};
    //on fait l'appel php
    xhr.open("GET", "stats.php", true);
    xhr.send(null);
}
 
function UpdateTextBox(xhr)
{
	var docXML= xhr.responseXML;
	//on declare l'objet obj et items pour le reutiliser ensuite;
	var obj;
	var items;
 
	items = docXML.getElementsByTagName("nbSearch");
	obj = document.getElementById("nbSearch");
	obj.value = items.item(0).firstChild.data;
 
	items = docXML.getElementsByTagName("nbInfos");
	obj = document.getElementById("nbInfos");
	obj.value = items.item(0).firstChild.data;
 
	items = docXML.getElementsByTagName("nbRatios");
	obj = document.getElementById("nbRatios");
	obj.value = items.item(0).firstChild.data;
 
	items = docXML.getElementsByTagName("nbXML");
	obj = document.getElementById("nbXML");
	obj.value = items.item(0).firstChild.data;
 
	items = docXML.getElementsByTagName("nbGen");
	obj = document.getElementById("nbGen");
	obj.value = items.item(0).firstChild.data;
 
	items = docXML.getElementsByTagName("nbTemp");
	obj = document.getElementById('nbTemp');
	obj.value = items.item(0).firstChild.data;
}
Voilà. J'espère que vous pourrez me donner une astuce pour régler mon problème.