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

romtrico064649 14 Messages postés lundi 6 novembre 2000Date d'inscription 1 juillet 2009 Dernière intervention - 22 juin 2009 à 14:18 - Dernière réponse : Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention
- 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
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 22 juin 2009 à 16:42
3
Merci
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.

Merci Bul3 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 78 internautes ce mois-ci

Commenter la réponse de Bul3
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 22 juin 2009 à 15:09
0
Merci
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
Commenter la réponse de Bul3
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 22 juin 2009 à 15:25
0
Merci
>>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 !
Commenter la réponse de Bul3
kankrelune 1305 Messages postés mardi 9 novembre 2004Date d'inscription 21 mai 2015 Dernière intervention - 22 juin 2009 à 16:08
0
Merci
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... .. .
Commenter la réponse de kankrelune
kankrelune 1305 Messages postés mardi 9 novembre 2004Date d'inscription 21 mai 2015 Dernière intervention - 22 juin 2009 à 16:09
0
Merci
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... .. .
Commenter la réponse de kankrelune
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 22 juin 2009 à 16:21
0
Merci
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.
Commenter la réponse de Bul3
Bul3 4934 Messages postés samedi 1 juillet 2006Date d'inscription 2 février 2015 Dernière intervention - 22 juin 2009 à 16:26
0
Merci
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
Commenter la réponse de Bul3

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.