Bonjour.

Voila je souhait effectuer un traitement plusieurs fois par le serveur avec a chaque fois un affichage du "log" sur la page du client :

traitement1 ok
traitement2 ok
...

chaque traitement est effectué par une XMLHTTPRequest lancé dans une boucle javascript.
Mon probleme :
en mode synchrone : tout les traitement sont effectué et ensuite le resultat de chaque traitement est affiché.

en mode asynchrone : toutes les requetes sont envoyé puis les resultat s'affichent au fur et a mesure des reponse. seulement, je n'arrive pas a savoir si tout mes traitement sont fini pour effectuer d'autres traitement apres ma boucle javascript.

un peu de code :
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
 
function getXhr(xhr){
		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(station){
		var xhr = null;
		xhr = getXhr(xhr);
		xhr.onreadystatechange = function(){
			if(xhr.readyState == 4 && xhr.status == 200){
				leselect = xhr.responseText;
				document.getElementById(station).innerHTML = leselect;
			}
		}
		xhr.open("POST","envoi_teleaction.php",true);
		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		xhr.send('station='+station);
	}
 
	function page_charge(){
		for (var i in listeStations ){
			go(listeStations[i]);
		}
		//effectuer autre chose ici quand TOUT est fini
	}