Salut,
J'essaie de remplir dynamiquement une liste déroulante suite à une requête HTTP. Cette requête me retourne une réponse correcte. Seulement le script est exécuté 2 fois sans raison apparente. Si je place une alert() n'importe où dans le script, il ne s'exécute qu'une fois!!!
Le résultat c'est que ma liste est doublée. D'ailleurs on le constate avec ma variable test initialisée à 0 et incrémentée dans la fonction appelée par l'évènement (SendQuery).
Si j'ai une alert test = 1, si je n'en mets pas test passe à 2!
Voici le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part <input type="text" name="List0" class="saisie" size=10 maxlength="8" ID="Text8" onkeyup="SendQuery(this.value);">Voyez-vous ce qui ne va pas?
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 /***********************************************/ /**** Liste emploi ****/ /***********************************************/ function Initialize() { try { req= new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(oc) { req=null; } } if(!req &&typeof XMLHttpRequest!="undefined") { req = new XMLHttpRequest(); } } var test = 0; function SendQuery(arg) { if (arg!="" && arg.length==8) { test++; Initialize(); var url = "emploi_lst.asp?arg=" + arg; if (req!=null) { req.onreadystatechange = Process; req.open("GET", url, true); req.send(null); } } else { HideEmploi(); } } function Process() { if (req.readyState == 4) { if (req.status == 200) { if(req.responseText=="") { HideEmploi(); } else { ShowEmploi(); AffEmploi(req.responseText); } }/* else { document.getElementById("Emploi0").innerHTML = "Un problème internet est survenu:" + req.statusText; }*/ } } function HideEmploi() { document.getElementById('Emploi0').style.display = "none"; document.getElementById('emploi_saisi').style.display = "none"; } function ShowEmploi() { document.getElementById('Emploi0').style.display = ""; document.getElementById('emploi_saisi').style.display = ""; } function AffEmploi(requete) { var tab = requete.split("##"); var exist = eval(tab[0]); var id = eval(tab[1]); var lib = eval(tab[2]); if (id[0] && lib[0]) { var element = document.createElement("option"); element.appendChild(document.createTextNode('')); element.value = 0; document.getElementById('Emploi0').appendChild(element); for (i in id) { var element = document.createElement("option"); element.appendChild(document.createTextNode(lib[i] +' '+ test)); // ON CONSTATE ICI QUE TEST RESTE A 1 OU PASSE A 2 element.value = id[i]; document.getElementById('Emploi0').appendChild(element); } } else { document.getElementById('Emploi0').removeChild(); HideEmploi(); } }
Merci par avance.
note: le code n'est pas fini, veuillez s'il vous plaît ne pas vous attarder sur d'autres problèmes éventuels.
Partager