Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/03/2011, 11h26   #1
Membre expérimenté
 
Avatar de topolino
 
Inscription : juillet 2003
Messages : 1 653
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : juillet 2003
Messages : 1 653
Points : 539
Points : 539
Par défaut 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 :
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 :
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
topolino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 12h12   #2
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 805
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 805
Points : 35 807
Points : 35 807
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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 13h41   #3
Membre expérimenté
 
Avatar de topolino
 
Inscription : juillet 2003
Messages : 1 653
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : juillet 2003
Messages : 1 653
Points : 539
Points : 539
J ai transformé mon code et toujours pareil --> ie ok FF ne marche pas
Code :
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);
            }
        }
topolino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 14h15   #4
Membre expérimenté
 
Avatar de nadox
 
Homme
Développeur
Inscription : 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
Points : 545
Points : 545
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)
nadox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 15h15   #5
Membre expérimenté
 
Avatar de topolino
 
Inscription : juillet 2003
Messages : 1 653
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : juillet 2003
Messages : 1 653
Points : 539
Points : 539
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
topolino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 16h32   #6
Membre expérimenté
 
Avatar de nadox
 
Homme
Développeur
Inscription : 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
Points : 545
Points : 545
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 ?)
nadox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 18h05   #7
Membre expérimenté
 
Avatar de topolino
 
Inscription : juillet 2003
Messages : 1 653
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : juillet 2003
Messages : 1 653
Points : 539
Points : 539
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
 
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
topolino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 18h47   #8
Membre expérimenté
 
Avatar de nadox
 
Homme
Développeur
Inscription : 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
Points : 545
Points : 545
Ok !
Error code 0 peut correspondre à plusieurs problème(ou pas)
La question est : que vaut URL ?
nadox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 09h23   #9
Membre expérimenté
 
Avatar de topolino
 
Inscription : juillet 2003
Messages : 1 653
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : juillet 2003
Messages : 1 653
Points : 539
Points : 539
L'url appele un web service qui renvoie de l xml.
topolino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 14h06   #10
Membre expérimenté
 
Avatar de topolino
 
Inscription : juillet 2003
Messages : 1 653
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : juillet 2003
Messages : 1 653
Points : 539
Points : 539
J'ai enfin trouvé. Il fallait ajouter (Access-Control-Allow-Origin", "*") au header. Le pb venait du cross web site.

Merci à vous
topolino est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h24.


 
 
 
 
Partenaires

Hébergement Web