Bonjour,
J'aimerais utiliser un objet xhr à deux endroits différents de ma page html..
Le premier pour remplir automatiquement et en direct un input readonly,
le second pour remplir une liste déroulante liée à une première..
Au début, j'avais juste le second et ça marchait bien.. mais ça s'est gâté lorsque j'ajoute le premier. En fait je ne sais pas si je peux créer deux objets XHR, ou si je dois utiliser le même, sachant qu'un de mes select.onChange lancera les deux fontions utilisant le ou les xhr..
Voilà le code mon script :
Ici je n'utilise qu'une seule instance d'xhr..
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
82
83
84
85
86
87
88
89
90
91
92
93 //_____________________________________________________________________________________ //Gestion de l'objet XmlHttpRequest function getXhr(){ var xhr = null; if(window.XMLHttpRequest) // Firefox et autres xhr = new XMLHttpRequest(); else if(window.ActiveXObject){ // Internet Explorer try { //celui-ci marche.. 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; } //_____________________________________________________________________________________ //Sert pour l'auto-complétion du select du véhicule /* * Méthode qui sera appelée sur le click du bouton */ function load_veh(){ var xhr = getXhr(); // On définit 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('vehic2').innerHTML = leselect; } } alert("ici c bon"); // Ici on va voir comment faire du post xhr.open("POST","ajaxVeh.php",false); // 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 l'auteur sel = document.getElementById('vehic1'); idVehic1 = sel.options[sel.selectedIndex].value; xhr.send("idVehic1="+idVehic1); } //_____________________________________________________________________________________ //_____________________________________________________________________________________ //Fonction de génération automatique de l'identifiant de la DT function identif() { alert("ici aussi"); var xhr = getXhr(); // On définit 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){ leinput = xhr.responseText; // On se sert de innerHTML pour rajouter les options a la liste document.getElementById('identif').innerHTML = leinput; } } //On récupère le contrôle input de l'identificateur sol = document.getElementById('identif'); var texto; //On récupère l'imputation part1 = document.getElementById('imput'); txtpart1 = part1.value; alert(txtpart1); //Pareil pour le véhicule et et sa vague part2 = document.getElementById('vehic1'); if (part2.value == "-1") txtpart2 = ""; else txtpart2 = part2.value; part3 = document.getElementById('vehic2'); if (part3.value == "-1") txtpart3 = ""; else txtpart3 = part3.value; val[] = (txtpart1,txtpart2,txtpart3); alert(val[0]." | ".val[1]." | ".val[2]; // Ici on va voir comment faire du post xhr.open("POST","ajaxIdt.php",false); // ne pas oublier ça pour le post xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); // ne pas oublier de poster les arguments xhr.send(val); }
Aucun de mes tests alert ne s'exécute, comme si les fonctions n'étaient pas actives..
Partager