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 :

[DOM] DOM XML, ne marche pas sous Firefox


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7
    Par défaut [DOM] DOM XML, ne marche pas sous Firefox
    Bonjour,

    Voila j'ai un bout de code simple qui normalement devrait bien fonctioner sur IE et FF, mais malheureusement cela ne marche pas, alors peut être pourriez vous m'aidez,

    Voila le code du fichier XML (simple) Fichier : annuaire.xml

    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
    <?xml version="1.0" encoding="iso-8859-1"?>
    <!DOCTYPE annuaire SYSTEM "annuaire.xsd">
    <annuaire>
        <personne>
            <denomination>
                <nom>toto</nom>
                <prenom>tata</prenom>
            </denomination>
            <adresse>
                <telephone>
                    <fixe>00.00.00.00.00.</fixe>
                    <portable>00.00.00.00.00.</portable>
                </telephone>
                <rue numero="10">henri</rue>
                <ville>xxxx</ville>
                <code>12345</code>
            </adresse>
        </personne>
        <personne>
            <denomination>
                <nom>titi</nom>
                <prenom>tutu</prenom>
            </denomination>
            <adresse>
                <telephone>
                    <fixe>00.00.00.00.00.</fixe>
                    <portable>00.00.00.00.00.</portable>
                </telephone>
                <rue numero="10">henri</rue>
                <ville>xxxx</ville>
                <code>123456</code>
            </adresse>
        </personne>
    </annuaire>
    le XSD : (annuaire.xsd)

    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
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <element name="annuaire" xmlns="http://relaxng.org/ns/structure/1.0">
        <oneOrMore>
            <element name="personnes">
                <element name="denomination">
                    <element name="nom">
                        <text/>
                    </element>
                    <element name="prenom">
                        <text/>
                    </element>
                </element>
                <element name="adresse">
                    <element name="telephone">
                        <element name="fixe">
                            <text/>
                        </element>
                        <element name="portable">
                            <text/>
                        </element>
                    </element>
                    <element name="rue">
                        <attribute name="numero">
                            <text/>
                        </attribute>
                        <text/>
                    </element>
                    <element name="ville">
                        <text/>
                    </element>
                    <element name="code">
                        <text/>
                    </element>
                </element>
            </element>
        </oneOrMore>
    </element>
    et enfin le Java : (fichier HTML)

    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//FR"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <script language="javascript" src="writeResult.js"
          type="text/javascript">
    </script>
     
    <script language="javascript" src="submitFormNom.js"
          type="text/javascript">
    </script>
     
        <title></title>
    </head>
     
    <body>
        <form method="post"
              name="ajax"
              action="#"
              id="ajax">
     
            Nom : <input type="text"
                  name="rechercheNom"
                  value="NOM" />
            <input type="BUTTON"
                  value="Submit"
                  onclick="submitFormNom()" />
     
            Prénom : <input type="text"
                  name="recherchePrenom"
                  value="PRENOM" />
            <input type="BUTTON"
                  value="Submit"
                  onclick="submitFormPrenom()" />
        </form>
        <div id="resultats">
     
        </div>
    </body>
    </html>
    (fichier submitFormNom.js)

    Code javascript : 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
    function submitFormNom()
    { 
    document.getElementById("resultats").innerHTML = "";
         var xhr; 
        try {  
            xhr = new ActiveXObject('Msxml2.XMLHTTP');   
        }
        catch (e) {
            try {   
                xhr = new ActiveXObject('Microsoft.XMLHTTP');    
            }
            catch (e2) {
                try {  
                    xhr = new XMLHttpRequest();     
                }
                catch (e3) {  
                    xhr = false;   
                }
            }
        }
     
        xhr.onreadystatechange  = function() { 
             if(xhr.readyState  == 4) {
                  if(xhr.status  == 200) {
                    var preparation = '<table border="1"><tr>';
                    preparation += '<td rowspan="2">Nom</td>';
                    preparation += '<td rowspan="2">Prénom</td>';
                    preparation += '<td rowspan="2">Adresse</td>';
                    preparation += '<td colspan="2">telephone</td>';
                    preparation += '</tr><tr>';
                    preparation += '<td>Fixe</td>';
                    preparation += '<td>Portable</td>';
                    preparation += '</tr></table>';
                    document.getElementById("resultats").innerHTML = preparation;
     
                    var doc = xhr.responseXML;
                    var root = doc.getElementsByTagName('annuaire').item(0); 
                    var personne = root.firstChild;
                    var nom = personne.getElementsByTagName('nom').item(0);
                    var recherche = document.ajax.rechercheNom.value.toLowerCase();
                    if (nom.firstChild.nodeValue.toLowerCase().match(recherche) == recherche) {
                        writeResultat(personne);
                    }
                        while(personne.nextSibling != null) {
                            personne = personne.nextSibling;
                            var nom = personne.getElementsByTagName('nom').item(0);
                            if (nom.firstChild.nodeValue.toLowerCase().match(recherche) == recherche) {
                                    writeResultat(personne);
                            }
                        }
                    }
                  else {
                    //document.ajax.dyn.value="Error code " + xhr.status;
                }
             }
        }; 
     
       xhr.open( "GET", "annuaire.xml",  true); 
       xhr.send(null); 
    }
    (fichier writeResult.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
    function writeResultat(personne) {
        var xhr;
     
        try {  
            xhr = new ActiveXObject('Msxml2.XMLHTTP');   
        }
        catch (e) {
            try {   
                xhr = new ActiveXObject('Microsoft.XMLHTTP');    
            }
            catch (e2) {
                try {  
                    xhr = new XMLHttpRequest();     
                }
                catch (e3) {  
                    xhr = false;   
                }
            }
        }
     
        xhr.open( "GET", "annuaire.xml",  true); 
        xhr.send(null);
     
        var doc = xhr.responseXML;    
        var nom = personne.getElementsByTagName('nom').item(0);
        var prenom = personne.getElementsByTagName('prenom').item(0);
        var fixe = personne.getElementsByTagName('fixe').item(0);
        var portable = personne.getElementsByTagName('portable').item(0);
        var rue = personne.getElementsByTagName('rue').item(0);
        var ville = personne.getElementsByTagName('ville').item(0);
        var code = personne.getElementsByTagName('code').item(0);
        var numero = personne.getElementsByTagName('rue').item(0).getAttribute('numero');
     
     
        var resultat = '<table><tr>';
            resultat += '<td>' + nom.firstChild.nodeValue + '</td>';
            resultat += '<td>' + prenom.firstChild.nodeValue + '</td>';
            resultat += '<td>' + numero + ' ' + rue.firstChild.nodeValue + ' ' + code.firstChild.nodeValue + ' ' + ville.firstChild.nodeValue + '</td>';
            resultat += '<td>' + fixe.firstChild.nodeValue + '</td>';
            resultat += '<td>' + portable.firstChild.nodeValue + '</td></tr></table>';
     
            document.getElementById("resultats").innerHTML += resultat;
    }

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 397
    Par défaut
    Je pense qu'un description de ce que tu veux faire ainsi de ce qui ne fonctionne pas ferait gagner du temps à tout le monde, car la tu as quand même inséré 5 bouts de codes, sans même dire ce qui ne fonctionnait pas.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7
    Par défaut
    Ce que je veu faire : un annuaire (je m'auto-exerce au XML DOM) j'ai donc 2 contact dans un fichier XML, 1 fonction de recherche par nom (submitFormNom) dans un fichier JS une fonction d'affichage (writeResult) dans un autre fichier JS et un fichier HTML permettant de joindre tous les bouts ^^

    Ce qui ne marche pas : Rien tous fonctione, enfin sous IE, sous Firefox rien ne s'affiche, même pas le formulaire j'ai l'impression que c'est mon XMLHttpRquest qui ne passe pas mais je ne peu pas en etre sur alors je vous demande de l'aide

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 397
    Par défaut
    En effet, j'ai l'impression que ton xhr ne fonctionne que sous IE

    Voila ce que j'utilise généralement, compare avec le tien mais il me semble qu'il manque un morceau.

    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
    function getXMLHTTP(){
      var xhr=null;
      if(window.XMLHttpRequest) // Firefox et autres
      xhr = new XMLHttpRequest();
      else if(window.ActiveXObject){ // Internet Explorer
        try {
          xhr = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
          try {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
          } catch (e1) {
            xhr = null;
          }
        }
      }
      else { // XMLHttpRequest non supporté par le navigateur
        alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
      }
      return xhr;
    }
    Bon courage

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7
    Par défaut
    Malheureusement meme avec ton code cela ne marche toujours pas j'ai mit en ligne pour ceux que sa interesse : http://www.gputech.com/XML/annuaire.html

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var doc = xhr.responseXML;    
        var nom = personne.getElementsByTagName('nom').item(0);
        var prenom = personne.getElementsByTagName('prenom').item(0);
        var fixe = personne.getElementsByTagName('fixe').item(0);
        var portable = personne.getElementsByTagName('portable').item(0);
        var rue = personne.getElementsByTagName('rue').item(0);
        var ville = personne.getElementsByTagName('ville').item(0);
        var code = personne.getElementsByTagName('code').item(0);
        var numero = personne.getElementsByTagName('rue').item(0).getAttribute('numero');
    Tu définis la variable "doc", mais tu utilises "personne"...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

Discussions similaires

  1. [AJAX] sondage marche pas sous firefox (lotus notes)
    Par watchabongo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/01/2008, 10h00
  2. drag and drop march pas sous firefox+joomla!
    Par tecap dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/10/2007, 10h16
  3. fonction redimensionnement marche pas sous firefox
    Par calitom dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 11/09/2007, 14h39
  4. le ValidationSummary ASP ne marche pas sous Firefox
    Par hokidoki dans le forum ASP.NET
    Réponses: 15
    Dernier message: 16/08/2007, 10h30
  5. Fonction qui ne marche pas sous FireFox
    Par Foudébois dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 17/11/2006, 14h35

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