AJAX, le status de mon objet est toujours égal à "0", please help me !

[Résolu]
Signaler
Messages postés
14
Date d'inscription
lundi 6 novembre 2000
Statut
Membre
Dernière intervention
1 juillet 2009
-
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
-
Bonjour,
Je désire effectuer une request de type XMLHTTPRequest sur un fichier XML.
Voici mon soucis, je m'explique :
Le code ci dessous contient deux fonction pour lire un fichier XML, la premiere en utilisant le XMLDOM de microsoft et la seconde en utilisant le XMLHTTPRequest.
La premiere fonctionne trés trés bien (XMLDOM ).
La seconde en revanche ....
L'objet xmldoc est bien un objet ([objet]).
En revanche, xmldoc.getElementsByTagName("book")[0] est null, comme si il n'existait pas ce noeud.
Le status de mon objet xhr est toujours égal à 0.
le fichier XML est le même pour les deux fonction, encodé en utf-8. Il s'agit du fichier XML télécharger sur le site W3School, donc valide.

voici le code html :

<html>
<head>
<metahttp-equiv="Content-Type"content="text/html"; charset="iso-8859-1">
<title>TEST AJAX</title>
<script>
function feeltestDom(){
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
xmldoc.load("test.xml");
document.body.innerHTML = xmldoc.getElementsByTagName("book")[0].firstChild.text;//.getElementsByTagName("h1")[0].firstChild.text;
}

function feeltest(){
var xhr = false;
if(location.protocol=="file:"){
if(!xhr)try{ xhr=new ActiveXObject("MSXML2.XMLHTTP"); }catch(e){xhr=false;}
if(!xhr)try{ xhr=new ActiveXObject("Microsoft.XMLHTTP"); }catch(e){xhr=false;}
}

xhr.onreadystatechange = function() {
   if(xhr.readyState == 4){
var xmldoc = xhr.responseXML;
document.body.innerHTML = xmldoc.getElementsByTagName("book")[0];//.firstChild.text;
alert(xhr.status); //toujours égal à 0
   }
}
xhr.open("GET", "test.xml", true);
xhr.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xhr.send(null);
}
</script>
</head>
id="main"onload="feeltestDom();">

</html>

voici le fichier xml :

Code xml :

<?xmlversion="1.0"encoding="utf-8"?>
<!-- Edited by XMLSpy -->
>
category="COOKING">
<titlelang="en">Everyday Italian</title>
>Giada De Laurentiis>
<year>2005</year>
>30.00

>
>
category="CHILDREN">
<titlelang="en">Harry Potter</title>
>J K. Rowling>
<year>2005</year>
>29.99

>
>
category="WEB">
<titlelang="en">XQuery Kick Start</title>
>James McGovern>
>Per Bothner>
>Kurt Cagle>
>James Linn>
>Vaidyanathan Nagarajan>
<year>2003</year>
>49.99

>
>
category="WEB">
<titlelang="en">Learning XML</title>
>Erik T. Ray>
<year>2003</year>
>39.95

>
>
>

Auriez vous une solution pour me sortir de se problème? Je ne comprends pas pourquoi le status de mon objet xhr est toujours égal à 0 et non à 200??

Merci par avance pour votre précieuse aide, j'en peux plus ! !

RomTrico

7 réponses

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
et finalement, en relisant,
il ne parle ni de FF ni d'erreur ????

>>pour lire un fichier XML, la premiere en utilisant le XMLDOM de microsoft
>>et la seconde en utilisant le XMLHTTPRequest.
bon, si c'est avec IE pour le 2ème, on a vu il n'y a pas 2 jours
que XMLHTTPREquest en local ne convenait, il faut
utiliser new ActiveXObject("Microsoft.XMLHTTP")
( sur un site ou en émulation serveur easyphp, wamp... ça baigne
  sans plus d'infos, je dirais bien un bug ?!? )

pour FF ça baigne et les autres, ça baigne

il y a bien les 3 manières citées de faire
( même si xmlhttprequest fonctionne aussi avec FF )

et ça >>alert(xhr.status); //toujours égal à 0
ben... oui : tout est ok.
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
Bonjour,

plusieurs erreurs, y compris dans le structure du xml
"extrait", uniquement pour FF ( comme tu dis qu'avec IE ça baigne,
mais franchement... je doute ! )

<html>
    <head>
        <title>TEST AJAX</title>
    </head>
   
        <script>
        xhr=new XMLHttpRequest();
        xhr.onreadystatechange = function()
        {    if(xhr.readyState == 4)
            {    var xmldoc = xhr.responseXML;
                alert(xmldoc.getElementsByTagName("bookcategory")[0].firstChild.nodeValue);
            }
        }
        xhr.open( "GET", "xml.xml", true);
        xhr.send(null);
    </script>
   
</html>

et le xml :

<?xml version="1.0" encoding="utf-8"?>

   
            COOKING
            <title>Everyday Italian</title>
            mon Site] [M'écrire] Bul
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
>>fichier XML télécharger sur le site

>> W3School,donc valide.
j'avions point lu ! ben non justement !

déjà, si on ferme une balise, elle devrait être ouverte !
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

ouep je pense qu'ils se sont plantés et voulaient faite

category="COOKING">

>>

category="COOKING">

@ tchaOo°

l'homme est un loup pour l'homme... .. .
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

D'ailleurs c'est peut être pas le fichier xml mais plutot le forum qui fait sauter certains espaces... .. .

@ tchaOo°

l'homme est un loup pour l'homme... .. .
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
tu as sans doute raison kankrelune !
j'avais cru voir .... et autre joyeusetés
"le reste du message reste valable"
j'évite d'ailleurs les ...., par goût ?
>>plutot le forum qui fait sauter certains espaces
plutôt le copié/collé depuis leur outil de développement
ver ce forum. un "éditeur classique" ça baigne.
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
je préfère, nettement :
   
        <category>COOKING</category>
        <title>Everyday Italian</title>
        <lang>en</lang>
        Giada De Laurentiis
        <year>2005</year>
        30.00

   
à

    <title lang="en">Everyday Italian</title>
    Giada De Laurentiis
    <year>2005</year>
    30.00

c'est plus "homogène"
( je n'ai pas dit "inverti ennuie" hein ! )
mais, chacun ses goûts, et la caravane passe