Bonjour,

je suis face à un problème que je n'arrive pas à résoudre , je vous explique :

je cherche à afficher plusieurs informations dans différentes balises div au changement de ma liste déroulante.

Voici le code php contenant mes différentes div :

Code html : 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
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="style.css" />
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript" src="tablesort.js"></script>
<script type="text/javascript" src="script.js"></script>
 
<title>WAM</title>
</head>
<body>
	<label id="label_stagiaire">Choississez un stagiaire :</label>
	<select id="stagiaire_select" onchange="fonction_affichage(this.value)">
		<?php include("chargement_stagiaire.php"); ?>
	</select><br /><br /> 
	<fieldset id="infos_stagiaires"><legend>Informations stagiaire :</legend>
		<div id="affiche_infos_stagiaire"></div>
	</fieldset>
	<fieldset id="formation_stagiaire"><legend>Formations :</legend>
	</fieldset>
	<fieldset id="session_stagiaire"><legend>Session :</legend>
		<fieldset id="action_stagiaire"><legend>Action :</legend>
		</fieldset>
		<fieldset id="suivi_stagiaire"><legend>Suivi :</legend>
		</fieldset>
		<fieldset id="fichier_stagiaire"><legend>Fichier :</legend>
		</fieldset>
	</fieldset>
 
</body>
</html>

Cette page sert à afficher les éléments au changement de mon select, cependant malgré la création d'une fonction mère, soit l'une ou l'autre de mes fonctions js ( cela dépend de l'ordre dans la fonction mère) est éxécuté...

Mes fonctions AJAX :

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
function Change_voir(str)
{
XMLhttp=new XMLHttpRequest();
 
XMLhttp.onreadystatechange=function()
  {
  if (XMLhttp.readyState==4 && XMLhttp.status==200)
    {
    document.getElementById("affiche_infos_stagiaire").innerHTML=XMLhttp.responseText;
    }
  }
XMLhttp.open("GET","form_voir_stagiaire.php?see="+true+'&id='+str,true);
XMLhttp.send();
}
 
function fonction_affichage(str) {
	var rep_fct1=Change_voir(str);
 
	var rep_fct2=Change_formation(str);
}
 
function Change_formation(str)
{
XMLhttp=new XMLHttpRequest();
 
XMLhttp.onreadystatechange=function()
  {
  if (XMLhttp.readyState==4 && XMLhttp.status==200)
    {
    document.getElementById("formation_stagiaire").innerHTML=XMLhttp.responseText;
    }
  }
XMLhttp.open("GET","formation_stagiaire.php?see="+true+'&id='+str,true);
XMLhttp.send();
}
Mes pages appelés par AJAX sont correctes et retournent exactement ce qu'elle doivent retourner.

J'espere avoir été clair, car je dois execute encore d'autres fonction sur le onchange, de ce fait, je veux deja que le onchange marche avec deux fonctions.

Je vous remercie, et espere que vous aurez une solution..

J'ai trouve la solution mais je ne l'a comprends pas ...
Il suffiet de remplacé le true dans les lignes par false
XMLhttp.open("GET","form_voir_stagiaire.php?see="+true+'&id='+str,false);

La question que je me pose est donc quelle est la différence entre asynchrone et synchrone ? Enfin qui pourrait me donner une explication simple et efficace ?

Florian