Bonjour,
Voici le code que j'utilise:
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
function ajax(nomduchamp,valeur,id){
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		requeteAJAX = new XMLHttpRequest();
		if (requeteAJAX.overrideMimeType) {
			requeteAJAX.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			requeteAJAX = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				requeteAJAX = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!requeteAJAX) {
		alert('Abandon : Impossible de créer une instance XMLHTTP');
		return false;
	}	
	requeteAJAX.open("GET","req_maj_aff.php?nomduchamp="+nomduchamp+"&valeur="+escape(valeur)+"&id="+id,true) ;
	requeteAJAX.send(null);
	requeteAJAX.onreadystatechange = function() {
		if(nomduchamp == "nb_cdts" && requeteAJAX.readyState == 4){
			var div_ori = document.getElementById('select_ori');
			div_ori.innerHTML = "<option>test</option>";
		}
	};
}
L'objectif est : suite à la modification d'un champ d'un formulaire d'une page web, je mets à jour la base de données et j'actualise l'élément de formulaire concerné. Pour la mise à jour de la base j'appelle la page req_maj_aff.php avec les paramètres qui vont bien. Cette fonction marche correctement.
Ce que je n'arrive pas à faire c'est mettre à jour l'affichage des éléments de formulaire de ma page.
j'ai notamment une liste dont voici le code d'affichage:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
echo "<select id=\"select_ori\" name=\"ori[]\" size=\"".$numrow_ori."\" multiple=\"multiple\">";
	for($i=0; $i<$numrow_ori; $i++){
		$eta = mysql_result($query_ori,$i,'eta');
		$cdts = mysql_result($query_ori,$i,'nb_cdts');
 
		echo"<option value=\"".$eta." - ".$cdts."\">".$eta." ( ".$cdts." )</option>";
	}
	echo "</select>";
Ceci me permet d'alimenter cette liste avec les données d'une base. Le code est en PHP. Sur un autre élément du formulaire j'appelle la fonction ajax('nb_cdts',this.value,'1') sur la commande onblur de cet élément.
Deux questions:
1) Ceci ne fonctionne que en mode synchrone (requeteAJAX.open("GET","req_maj_aff.php?nomduchamp="+nomduchamp+"&valeur="+escape(valeur)+"&id="+id,true) ;
Si on remplace le 'true' à la fin par un 'false' (ce qui correspond alors au mode asynchrone) ça ne fonctionne plus. Pourquoi?

2)Pourquoi ma liste n'est-elle pas mise à jour? Je devrais normalement obtenir une liste avec une seule valeur 'test'.

Merci