[AJAX] Ajax pas asynchrone
Bonjour,
J'ai réalisé un bout de code pour avoir automatiquement les villes et le département en fonction d'un code postal.
Le problème est que lorsque mon code s'execute, mon navigateur se bloque entièrement...
De plus, je veux afficher un message "Patientez svp..." dans la liste déroulante des villes mais cela marche qu'avec Firefox, pas avec IE...
Voici mon code js :
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
|
<script language="javascript">
function ajax()
{
codepostal=document.create_account.postcode.value;
liste=document.create_account.city;
if (codepostal.length == 5)
{
var xhr=null;
//Firefox
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
}
//IE
else if (window.ActiveXObject)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
//affichage du message d'attente
liste.selectedIndex=0;
liste.item(0).value="0";
liste.item(0).text="Patientez svp...";
//on définit l'appel de la fonction au retour serveur
xhr.onreadystatechange = function() { recherche(xhr); };
//appelle du fichier insee.xml
xhr.open("GET", "http://.../insee.xml",true);
xhr.send(null);
return false;
}
}
function recherche(xhr)
{
var docXML= xhr.responseXML;
//on récupère les villes
var villes = docXML.getElementsByTagName("Commune");
//on récupère les départements
var dpt = docXML.getElementsByTagName("Departement");
//on récupère les codes postaux
var cp = docXML.getElementsByTagName("Codepostal");
//on récupère le code postal saisi
var code = document.create_account.postcode.value;
departement = null;
liste=document.create_account.city;
j=1;
tabVilles=new Array();
tabVilles[0]="Choisissez votre ville";
//boucle pour récupérer les villes et le département correspondant au code postal saisi
for (i=0;i<villes.length;i++)
{
if(cp.item(i).firstChild.data==code)
{
tabVilles[j] = villes.item(i).firstChild.data;
j++;
departement = dpt.item(i).firstChild.data
}
}
liste.length=j;
//si on a qu'une ville on l'affiche par défaut
if(liste.length==2)
{liste.selectedIndex=1;}
//sinon on se place sur la première valeur : "Choisissez votre ville"
else liste.selectedIndex=0;
//boucle pour remplir la liste déroulante des villes
for (k=0;k<j;k++)
{
liste.options[k].value=k;
liste.options[k].text = tabVilles[k];
}
//affichage du département dans le champ de texte departement
document.create_account.state.value=departement;
}
</script> |
Merci pour votre aide.