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 :
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);
}
Ici je n'utilise qu'une seule instance d'xhr..
Aucun de mes tests alert ne s'exécute, comme si les fonctions n'étaient pas actives..