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

AJAX Discussion :

[AJAX] Consommer un web service


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut [AJAX] Consommer un web service
    Bonjour,

    Je veux consommer un web service REST/XML via javascript. Cela fonctionne bien avec IE mais pas avec Firefox. Je tourne en rond, qq un aurait il une idee ?

    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
     
    function getXhr() {
                var xhr = null;
                if (window.XMLHttpRequest)
                    xhr = new XMLHttpRequest();
                else if (window.ActiveXObject) {
                    try {
                        xhr = new ActiveXObject("Msxml2.XMLHTTP");
                    } catch (e) {
                        xhr = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                }
                else {
                    alert("Your browser does not support XMLHTTPRequest (Ajax method)...");
                    xhr = false;
                }
                return xhr
            }

    Ca plante au niveau ResponseXML avec FF

    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
     
    function test(url) {
     
                var xhr = getXhr();
                if (xhr) {
                    xhr.open("GET", url, true);
                    xhr.setRequestHeader("Content-type", "text/xml; charset=utf-8");
                    xhr.send(null);
     
                    xml = xhr.responseXML.xml;
                    //xml = xhr.responseText;
                    alert(xml);
                }
     
                var xml_doc = new ActiveXObject("Microsoft.XMLDOM");
                xml_doc.async = false;
                xml_doc.loadXML(xml);
     
                //xml_doc.childNodes[0].childNodes
                nodeList = xml_doc.getElementsByTagName("Clients");
                alert(nodeList.length);
     
                document.getElementById("test").innerHTML = "";
                document.getElementById("TextAreaGET").innerHTML = "";
     
                for (var i = 0; i < nodeList.length; i++) {
                    document.getElementById("test").innerHTML += nodeList[i].getElementsByTagName("ClientShortName")[0].text + "<br>";
                }
            }
    Merci à vous

  2. #2
    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
    Ce que tu fais ne correspond à rien...

    * Tu lances une requête AJAX dont tu souhaites afficher la réponse avant de l'avoir reçue (pas de gestion de onreadystatechange)
    * Tu traites une propriété de responseXML qui n'existe pas (responseXML.xml)
    * Enfin, tu essayes de fourrer le tout dans une méthode (loadXML) spécifique IE...
    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

  3. #3
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    J ai transformé mon code et toujours pareil --> ie ok FF ne marche pas
    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
     
    function test2(url) {
                var xhr = getXhr();
                if (xhr) {
                    xhr.onreadystatechange = function() {
                        if (xhr.readyState == 4 && xhr.status == 200) {
                            xml = xhr.responseXML.xml;
                            alert(xhr);
                        }
                    }
                    xhr.open("GET", url, true);
                    xhr.setRequestHeader("Content-type", "text/xml; charset=utf-8");
                    xhr.send(null);
                }
            }

  4. #4
    Membre chevronné Avatar de nadox
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2010
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 360
    Par défaut
    Bonjour,
    Il me semble que c'est toujours utile de lire les réponses aux questions que l'on pose, non ?
    Citation Envoyé par Bovino Voir le message
    * Tu traites une propriété de responseXML qui n'existe pas (responseXML.xml)

  5. #5
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    L'object fonctionne sous IE.

    Par contre j'ai lu que pour FF il fallait just responseXML toujours le meme pb, sous FF je ne recupere rien

  6. #6
    Membre chevronné Avatar de nadox
    Homme Profil pro
    Développeur
    Inscrit en
    Février 2010
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 360
    Par défaut
    Peut-être que tu pourrais nous fournir une petite version réactualisée de ton code, s'il te plaît ?
    (utilises tu toujours le loadXml ?)

  7. #7
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    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
     
    function getHTTPObject() 
        {
            var xmlhttp = false;
     
            if (window.XMLHttpRequest) {
                var xmlhttp = new XMLHttpRequest();
            }
            else if (window.ActiveXObject) {
                try { 
                    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
                }
                catch (e) {
                    try { 
                        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    catch (e) {
                        xmlhttp = false;
                        window.alert("Votre navigateur ne prend pas en charge l'objet XMLHTTPRequest.");
                    }
                }
            }
            return xmlhttp;
        }
     
    function getfilm() {
        var xmlget = getHTTPObject(); 
        if(!xmlget){ return; } 
     
        xmlget.onreadystatechange  = function()
        { 
             if(xmlget.readyState == 4)
             {
                  if(xmlget.status  == 200) 
                     alert(xmlget.responseText);
                  else 
                     alert("Error code " + xmlget.status + xmlget.responseText);              
             }
        };
     
     
        xmlget.open("GET", URL, true);
        xmlget.send(null);
    }
    sous FF j'ai un error code 0
    Sous ie pas de soucis

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/11/2009, 15h04
  2. Réponses: 3
    Dernier message: 06/12/2007, 17h35
  3. deployer et consommer un web service
    Par fétémété dans le forum Services Web
    Réponses: 6
    Dernier message: 23/10/2007, 22h41
  4. Réponses: 7
    Dernier message: 17/10/2007, 17h06
  5. Comment consommer un web service en java
    Par Vins83 dans le forum Services Web
    Réponses: 1
    Dernier message: 16/01/2006, 23h33

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