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] XMLHttpRequest ne fonctionne qu'avec FF


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 11
    Points : 8
    Points
    8
    Par défaut [AJAX] XMLHttpRequest ne fonctionne qu'avec FF
    Salut @ tous !

    Dans le répertoire txt/ du serveur j'ai plusieurs fichiers contenant une liste de villes :

    01 - Ain.txt
    Bourg-en-Bresse
    Oyonnax
    Ambérieu-en-Bugey
    Bellegarde-sur-Valserine
    Miribel
    Belley
    .....

    02 - Aisne.txt
    Saint-Quentin
    Soissons
    Laon
    Tergnier
    .....

    Ce script mets à jour grâce à du JS la liste des villes par rapport au département sélectionné :

    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
    <script type="text/javascript">
     
    function mise_a_jour_liste_noms_villes(fichier_noms_villes)
        {
        if(fichier_noms_villes != "0") // Si un département à été choisi alors ...
            {
            // **************************************************************
            // Récupération du noms des villes dans le fichier du département
            // **************************************************************
            var xhr_object = null;
     
            if(window.XMLHttpRequest) // Firefox
                {
                xhr_object = new XMLHttpRequest();
                }
     
            else if(window.ActiveXObject) // Internet Explorer
                {
                xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
                }
            else // XMLHttpRequest non supporté par le navigateur
                {
                alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
                return;
                }
     
            xhr_object.open("GET", "txt/"+fichier_noms_villes+".txt", true);  
     
            xhr_object.onreadystatechange = function()
                {
                if(xhr_object.readyState == 4)
                    {
                    // Récupération des noms des villes dans le fichier texte
                    // ------------------------------------------------------
                    var liste_noms_villes = xhr_object.responseText;
     
                    // Création du tableau contenant le noms des villes
                    // ------------------------------------------------
                    tableau_noms_villes = liste_noms_villes.split('\n');
     
                    // Mise à jour de la liste des noms de villes
                    // ------------------------------------------
                    nom_formulaire.choix_ville.options.length = tableau_noms_villes.length;
                    for($i=0; $i<tableau_noms_villes.length; $i++)
                        {
                        nom_formulaire.choix_ville.options[$i].value = $i;
                        nom_formulaire.choix_ville.options[$i].text = tableau_noms_villes[$i];
                        }
                    }
                }
     
            xhr_object.send(null);
            }
        else // Sinon si aucun département n'a été choisi ...
            {
            nom_formulaire.choix_ville.options.length = 1;
            nom_formulaire.choix_ville.options[0].value = 0;
            nom_formulaire.choix_ville.options[0].text = "          -- Choisissez une ville --          ";                    
            }
        }
     
    <form name="nom_formulaire">
     
        <select name="choix_pays" onchange="mise_a_jour_liste_noms_villes(this.options[this.selectedIndex].value);">
            <option value="0">-- Choisissez un département --</option>
            <option value="01 - Ain">01 - Ain</option>
            <option value="02 - Aisne">02 - Aisne</option>
        </select>
        <br />
        <br />
        <select name="choix_ville">
            <option value="0">          -- Choisissez une ville --          </option>
        </select>
     
    </form>
    Tout fonctionne bien sous FF mais sous IE et netscape rien ne ce passe (le message d'alerte ne s'affiche pas !), sous Opéra le message d'alerte s'affiche.
    Y a t il une solution au moins pour IE et netscape ?
    Pour Opéra je laisse tomber ?

    Merci...

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Personne ?

  3. #3
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Citation Envoyé par cyber6ou
    Personne ?

    http://siddh.developpez.com/articles/ajax/#LII

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    !! BONNE ANNEE A TOUS !!

    En fait il manquait juste doucment. dans le code qui affiche la liste des villes !
    Voici le code à jour qui fonctionne sous IE FF et Netscape (pour Opéra malheureuement le navigateur de reconnait pas les objets XMLHTTPRequest) :
    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
    <script type="text/javascript">
     
    function mise_a_jour_liste_noms_villes(fichier_noms_villes)
        {
        // Définition de l'objet XMLHttpRequest en fonction du navigateur
        // --------------------------------------------------------------
        var xhr_object = null;
     
        if(window.XMLHttpRequest) // Navigateur Firefox, NetScape
            {
            xhr_object = new XMLHttpRequest();
            }
     
        else if(window.ActiveXObject) // Internet Explorer
            {
            xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
            }
        else // Sinon le navigateur de supporte pas les objets  XMLHTTPRequest (Opéra) ...
            {
            alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
            return;
            }
     
        // Définition de l'appel de la fonction au retour serveur
        // ------------------------------------------------------
        xhr_object.onreadystatechange = function() // Fonction a exécuter à la fin de la lecture du fichier
            {
            if(xhr_object.readyState == 4) // Si la lecture du fichier est terminée alors ...
                {
                if(fichier_noms_villes != "0") // Si on a chosi un département alors ...
                    {
                    // Récupération des noms des villes dans le fichier texte
                    // ------------------------------------------------------
                    var liste_noms_villes = xhr_object.responseText;
     
                    // Création du tableau contenant le noms des villes
                    // ------------------------------------------------
                    tableau_noms_villes = liste_noms_villes.split('\n');
     
                    // Mise à jour de la liste des noms de villes
                    // ------------------------------------------
                    document.nom_formulaire.choix_ville.options.length = tableau_noms_villes.length;
                    for($i=0; $i<tableau_noms_villes.length; $i++)
                        {
                        document.nom_formulaire.choix_ville.options[$i].value = $i;
                        document.nom_formulaire.choix_ville.options[$i].text = tableau_noms_villes[$i];
                        }
                    } // Fin si on a chosi un département
                } // Fin si la lecture du fichier est terminée
            else // Sinon si aucun département n'a été choisi ...
                {
                document.nom_formulaire.choix_ville.options.length = 1;
                document.nom_formulaire.choix_ville.options[0].value = 0;
                document.nom_formulaire.choix_ville.options[0].text = "          -- Choisissez une ville --          ";            
                } // Fin sinon si aucun département n'a été choisi
            } // Fin de la fonction a exécuter à la fin de la lecture du fichier
     
        //on appelle le fichier reponse.txt
        xhr_object.open("GET", "txt/"+fichier_noms_villes+".txt", true);
        xhr_object.send(null);
        }
     
    </script>
     
    </head>
     
    <body>
     
    <form name="nom_formulaire">
     
        <select name="choix_pays" onchange="mise_a_jour_liste_noms_villes(this.options[this.selectedIndex].value);">
            <option value="0">-- Choisissez un département --</option>
            <option value="01 - Ain">01 - Ain</option>
            <option value="02 - Aisne">02 - Aisne</option>
        </select>
        <br />
        <br />
        <select name="choix_ville">
            <option value="0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -- Choisissez une ville -- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</option>
        </select>
     
    </form>
     
    </body>
     
    </html>

  5. #5
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    pour Opéra malheureuement le navigateur de reconnait pas les objets XMLHTTPRequest
    Pourtant, j'utilise XMLHttpRequest avec Opera (et d'autres) depuis plusieurs mois sans aucun problème...

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Depuis sa version 7.6, Opera gère les XMLHttpRequest. Mais sans doute est-ce parce que tu fais un test sur window.XMLHttpRequest.

    Essaie ceci : (je n'ai que Firefox à portée, là, mais ça devrait fonctionner sous Opera).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var xhr_object = null;
     
    try {
      xhr_object = new XMLHttpRequest();
    } catch (e) {
      try {
        xhr_object = new ActiveXObject('Microsoft.XMLHTTP');
      } catch (e) {
        window.alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
      }
    }

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

Discussions similaires

  1. Script ajax qui ne fonctionne pas avec une écran smartphone
    Par beegees dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/08/2016, 12h27
  2. [AJAX] AJAX : XmlHttpRequest ne fonctionne pas
    Par Draakh dans le forum AJAX
    Réponses: 4
    Dernier message: 20/01/2015, 10h35
  3. [AJAX] xmlhttprequest.send qui ne fonctionne pas avec une variable !
    Par hoaxpunk dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/03/2009, 18h17
  4. [AJAX] simple affichage avec Ajax.Request ne fonctionne pas
    Par karimphp dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 18/12/2007, 09h35
  5. [AJAX] XMLHttpRequest fonctionne pas dans ie
    Par tchoukapi dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 27/09/2006, 11h45

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