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

Résolu
romtrico064649 Messages postés 14 Date d'inscription lundi 6 novembre 2000 Statut Membre Dernière intervention 1 juillet 2009 - 22 juin 2009 à 14:18
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 - 22 juin 2009 à 16:42
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

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 14
22 juin 2009 à 16:42
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.
3
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 14
22 juin 2009 à 15:09
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
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 14
22 juin 2009 à 15:25
>>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 !
0
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
22 juin 2009 à 16:08
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... .. .
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
22 juin 2009 à 16:09
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... .. .
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 14
22 juin 2009 à 16:21
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.
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 14
22 juin 2009 à 16:26
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
0