[AJAX] Plusieurs xhr dans un script ?
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:
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..