Bonjour,
J'utilise la fonction getXhr() pour afficher des éléments sur un formulaire lors du clic sur un bouton (affichage que si on a besoin de compléter ces champs).
J'ai 2 boutons :
<input value="Compléments..." name="btn_complements" type="button" onClick="complements();" />
et plus loin
<input value="Détails..." name="btn_echeancier" type="button" onClick="echeancier();" />
Quand je clique sur l'un ou sur l'autre en premier, mes champs supplémentaires s'affichent.
Quand je clique d'abord sur btn_echeancier puis sur btn_complements, mes champs supplémentaires s'affichent aussi.
MAIS :
Quand je clique sur btn_complements puis sur btn_echeancier les compléments s'affichent mais pas l'échéancier.
Voici les fonctions utilisées :
Je pensais que peut-être l'utilisation de la fonction getXhr() fois posait problème mais vu que ça marche dans le sens échéancier -> compléments je ne vois pas pourquoi ça ne marcherait pas dans le sens compléments -> échéancier.
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 function getXhr(){ var xhr = null; 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 echeancier(){ var xhr = getXhr(); // On défini ce qu'on va faire quand on aura la réponse xhr.onreadystatechange = function(){ // On ne fait quelque chose que si on a tout reçu et que le serveur est ok if(xhr.readyState == 4 && xhr.status == 200){ leselect = xhr.responseText; // On se sert de innerHTML pour rajouter les options a la liste document.getElementById('div_echeancier').innerHTML = leselect; } } // Ici on va voir comment faire du post xhr.open("POST","v_inc/ajaxEcheancier.php",true); // ne pas oublier ça pour le post xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); // ne pas oublier de poster les arguments // ici, l'id de la convention et le montant sel1 = document.getElementById('val_idConvention'); sel2 = document.getElementById('totalInsc'); sel3 = document.getElementById('typeClient'); sel4 = document.getElementById('val_annee1'); sel5 = document.getElementById('val_annee2'); var idConvention=sel1.value; var Montant = sel2.value; var tClient=sel3.value; var annee1=sel4.value; var annee2=sel5.value; xhr.send("idConvention="+idConvention+"&montant="+Montant+"&typeClient="+tClient+"&annee1="+annee1+"&annee2="+annee2); //xhr.send(); } function complements(){ var xhr = getXhr(); // On défini ce qu'on va faire quand on aura la réponse xhr.onreadystatechange = function(){ // On ne fait quelque chose que si on a tout reçu et que le serveur est ok if(xhr.readyState == 4 && xhr.status == 200){ leselect = xhr.responseText; // On se sert de innerHTML pour rajouter les options a la liste document.getElementById('div_complements').innerHTML = leselect; } } // Ici on va voir comment faire du post xhr.open("POST","v_inc/ajaxComplements.php",true); // ne pas oublier ça pour le post xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); // ne pas oublier de poster les arguments // ici, l'id de la convention et le montant data1 = document.getElementById('val_idConvention'); data2 = document.getElementById('val_montantInsc'); var idConvention=data1.value; var mtntInsc=data2.value; xhr.send("idConvention="+idConvention+"&mtntInsc="+mtntInsc); }
Et j'ai vérifié les valeurs de sel1 à sel5 elles sont correctes.
Merci
Partager