IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] Ajax pas asynchrone


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 61
    Points : 42
    Points
    42
    Par défaut [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 : 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
     
    <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.

  2. #2
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    Pour l'asynchrone, il faut que tu rajoute une condition dans ta fonction recherche : if (readyState==4).
    Pour le coup du "patientez svp", tu va sans doute devoir faire ça en utilisant Dom (création d'un noeud Option)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 61
    Points : 42
    Points
    42
    Par défaut
    J'ai effectivement rajouté hier la condition xhr.readyState==4 dans ma fonction recherche mais ca n'a pas résolu mon problème...

    Pour le "patientez", est-ce que tu peux me montrer ce qu'il faut faire?

    Merci

  4. #4
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    ici

    encore mieux

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 61
    Points : 42
    Points
    42
    Par défaut
    Ok !!!
    Merci pour tout haltabush !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] ajax IE pas FireFox..?
    Par Alex35 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 15/05/2007, 09h21
  2. [AJAX] Code tuto Ajax fonctionne pas sous FF, mais IE et OP sont OK
    Par hugo69 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 08/01/2007, 21h27
  3. [AJAX] autocompletion pas a pas
    Par boulika dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/10/2006, 11h25
  4. [AJAX] forcer un script ajax à ne pas regarder dans le cache
    Par grinder59 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/07/2006, 17h33
  5. [AJAX] Ajax ne réactualise pas le javascript ?
    Par shadowbob dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 23/01/2006, 08h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo