Bonjour,
ne sachant trop dans quelle rubrique placer cette demande (Ajax ou Javascript), je la mets dans les deux.


je souhaite exécuter une série de tests successivement. Chaque test doit être terminé avant de passer au suivant.
Pour les besoins de l'exemple chaque test retourne une valeur après 2 s d'attente (extrait de code php dans ci-dessous).
Je m'attends donc à avoir une mise à jour du résultat toutes les 2s.
En fonction du résultat du test, la couleur de fond de la cellule variera

Or,
[si async:true] après 2s, les 4 résultats sont affichés en même temps et la propriété css se met à jour avec une même valeur sans tenir compte du résultat du test
[si async:false] après chaque 2s, la console affiche le résultat correct de chaque test mais la propriété css ne se met à jour qu'avec une même valeur sans tenir compte du résultat du test

Il me manque quelque chose mais quoi?
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
 
$(function () { // lancement des différents tests
	$('#tstPlay').click(function() {
		$('td').css('background-color','#f9eee0'); // Couleur de fond par défaut
 
		Test('Eth1');
		Test('Eth2');
		Test('Eth3');
		Test('Eth4');
	});	
});
 
function Test(test){
	page="dbox.php";
	$.ajax({  // ajax
		url: page, // url de la page à charger
		type: 'POST',
		data: "test="+test,
		cache: false, // pas de mise en cache 
		timeout: 5000,
                async: false,
		error: function(request,error) {
			if (error == "timeout") {
				affiche(0,test); // Fin du test timeout
				console.log ("timeout");
			}
			else {
				affiche(0,test); // Fin du test error
				console.log ("error");
			}
		},
		success:function(retour){ // si la requête est un succès
			affiche(retour,test);
			console.log ("%s",retour);
		}
	})
}
 
function affiche(retour, test) {
	switch (test) {
	case "Eth1":
		id = '#tstEth1';
		break;
	case "Eth2":
		id = '#tstEth2';
		break;
	case "Eth3":
		id = '#tstEth3';
		break;
	case "Eth4":
		id = '#tstEth4';
		break;
	}
 
	if (retour == '0') 
		$(id).css('background-color','red');
	else
		$(id).css('background-color','green');
	console.log ("%s:%s",id,retour);
}
 
 
<?php
 
        $test = $_POST["test"];
 
        sleep (2);
        switch ($test) {
    case "Eth1":
        echo '1';
        break;
    case "Eth2":
        echo '0';
        break;
    case "Eth3":
        echo '1';
        break;
    case "Eth4":
        echo '0';
        break;
        }
?>