Bonjour,
Voici le code que j'utilise: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.
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>"; } }; }
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:
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.
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>";
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
Partager