Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1468 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [AJAX] Parsing d'un XML, lapin komprÿ ...

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

[AJAX] Parsing d'un XML, lapin komprÿ ...

n°1491052
MossieurPr​opre
I d͟o̩n᷃'̵t͖ give a shit
Posté le 13-12-2006 à 21:45:19  profilanswer
 

'Swar
 
Je me mets doucement à l'AJAX, en tentant de faire un premier script qui récupèrerais dans une base de données contenant des commentaires de photos le dernier commentaire afin de l'afficher sur une page. Cependant, j'ai _un peu_ de mal pour faire le parser de XML en JavaScript ...
 
Tout d'abord, ma page PHP chargée de récupérer le dernier commentaire fonctionne bien, le XML renvoyé ressemble à ça :
 

<?xml version="1.0"?>
  <exemple>
    <commentaires>
      <table>commentaires</table>
      <nom>Cricri</nom>
      <date>1165841476</date>
      <photo>d10.diapo_bouffe_cricri19</photo>
      <comment>C'est un peu ?a sauf que c'est l'inverse</comment>
    </commentaires>
  </exemple>


 
Yeehaa. Voici le code de la fonction de parsing :
 

Code :
  1. function test01IsBack()
  2. {
  3.     if (_xmlHttp.readyState==4)
  4.     {
  5.      var docXML= _xmlHttp.responseXML.documentElement;
  6.      alert(_xmlHttp.responseText);
  7. var comroot = docXML.getElementsByTagName("commentaires" )[0];
  8. alert(comroot.length);
  9. var nameNode = comroot.getElementsByTagName("nom" )[0];
  10. var name = comroot.childNode[0].nodeValue;
  11. alert(name);
  12. //     document.getElementById("test" ).innerHTML=_xmlHttp.responseText;
  13. //     var lenom = docXML.getElementsByTagName("table" );
  14. //      var latable = docXML.getElementsByTagName("table" );
  15.     
  16.      alert ("test" );
  17. //      alert (lenom);
  18. //      alert (table);
  19.     }
  20. }


 
Alors. Sous IE ou Firefox, le premier "alert" m'affiche bien le XML reçu. Ensuite, IE me rapporte une erreur sur la ligne suivante : "'null' a la valeur Null (ah bon ? [:a_bon]) ou n'est pas un objet" et s'arrête. Côté Firefox, cette ligne passe, puis le second "alert" (donc, selon moi, le nombre d'enfants de <commentaires> ) me donne "11" (?!). Pour les 2, le reste n'est pas exécuté. J'ai fait quoi qui va pas ? Ca fait 2 jours que je suis dessus, chaque page Google me donne une manière différente de faire, je sais plus quoi faire, je vous en prie, HFR, vous êtes mon seul espoir ... :cry:
 
A+

mood
Publicité
Posté le 13-12-2006 à 21:45:19  profilanswer
 

n°1491104
MossieurPr​opre
I d͟o̩n᷃'̵t͖ give a shit
Posté le 14-12-2006 à 07:30:51  profilanswer
 

ben up, quoi :/

n°1491118
flo850
moi je
Posté le 14-12-2006 à 08:29:42  profilanswer
 

pourquoi tu fais docXML= _xmlHttp.responseXML.documentElement;?  
 
moi je fais docXML= _xmlHttp.responseXML;

n°1491121
anapajari
s/travail/glanding on hfr/gs;
Posté le 14-12-2006 à 08:46:06  profilanswer
 

nan y'a confondage surtout...
 
le responseXML c'est pas un objet DOM tu peux donc pas taper dedans comme ça!!!
Il faut que tu construises un objet à partir du flux reçu, et là biensur ça se complique car FF et IE divergent (:o) sur la syntaxe.
Pour IE il faut faire:

Code :
  1. docXML = new ActiveXObject("Microsoft.XMLDOM" );
  2. docXML.loadXML(xmlString);


et pour gecko

Code :
  1. docXML = document.implementation.createDocument('', rootNodeName, null);
  2. docXML = (new DOMParser()).parseFromString(xmlString,"text/xml" );


Et tu as bien remarqué que "implementation" necessite un rootNode en plus alors que XMLDOM non :)

n°1491793
MossieurPr​opre
I d͟o̩n᷃'̵t͖ give a shit
Posté le 15-12-2006 à 12:57:11  profilanswer
 

anapajari a écrit :

nan y'a confondage surtout...
 
le responseXML c'est pas un objet DOM tu peux donc pas taper dedans comme ça!!!
Il faut que tu construises un objet à partir du flux reçu, et là biensur ça se complique car FF et IE divergent (:o) sur la syntaxe.
Pour IE il faut faire:

Code :
  1. docXML = new ActiveXObject("Microsoft.XMLDOM" );
  2. docXML.loadXML(xmlString);


et pour gecko

Code :
  1. docXML = document.implementation.createDocument('', rootNodeName, null);
  2. docXML = (new DOMParser()).parseFromString(xmlString,"text/xml" );


Et tu as bien remarqué que "implementation" necessite un rootNode en plus alors que XMLDOM non :)


 
certes :jap:
 
mais ce que je ne comprend pas, c'est comment un script comme le III-a de cette page peut fonctionner, car il ne met pas en oeuvre d'objet DOM ?!

n°1491803
anapajari
s/travail/glanding on hfr/gs;
Posté le 15-12-2006 à 13:26:54  profilanswer
 

euh alors en fait :o j'ai raconté nawak j'étais à l'ouet et je parlais de responseText vu que c'était ce qu'il y avait dans ton 1er post.
xmlResponse renvoie bien un objet XML utilisable directement via le DOM .

n°1492084
MossieurPr​opre
I d͟o̩n᷃'̵t͖ give a shit
Posté le 15-12-2006 à 20:29:54  profilanswer
 

donc, problème non résolu :'(
 
des idées, les gens ?

n°1492363
MossieurPr​opre
I d͟o̩n᷃'̵t͖ give a shit
Posté le 17-12-2006 à 14:38:34  profilanswer
 

up :(

n°1492446
flo850
moi je
Posté le 17-12-2006 à 20:33:04  profilanswer
 

tu as testé ce que je t'ai dis ?

n°1492459
MossieurPr​opre
I d͟o̩n᷃'̵t͖ give a shit
Posté le 17-12-2006 à 21:16:41  profilanswer
 

flo850 a écrit :

tu as testé ce que je t'ai dis ?


 
désolé, j'avais pas vu ta réponse :/
 
Si je retire le "documentElement", IE m'affiche le premier alert, puis me donne une erreur à la ligne du second alert : "Objet requis".

mood
Publicité
Posté le 17-12-2006 à 21:16:41  profilanswer
 

n°1492461
masklinn
í dag viðrar vel til loftárása
Posté le 17-12-2006 à 21:35:36  profilanswer
 

  • responseXML est un document XML, utiliser documentElement n'a pas d'intérêt
  • Vérifier qu'il n'y a pas eu d'erreur de parsing de ton XML par contre, si tu affiches le responseXML.firstChild et que ça te dit "parseerror" (sous Firefox en tout cas) c'est que ton XML était mal formé et n'a pas pu être parsé
  • Accessoirement je vois pas trop comment tu peux trouver la longueur d'une node XML, ça a pas vraiment de sens [:dawa]
  • childNodes prend un S, parce qu'il y en a plusieurs, de nodes enfant, la pluspart du temps
  • anapajari est un gros mauvais :o

Message cité 2 fois
Message édité par masklinn le 17-12-2006 à 21:36:01

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1492464
MossieurPr​opre
I d͟o̩n᷃'̵t͖ give a shit
Posté le 17-12-2006 à 21:43:46  profilanswer
 

masklinn a écrit :

  • responseXML est un document XML, utiliser documentElement n'a pas d'intérêt
  • Vérifier qu'il n'y a pas eu d'erreur de parsing de ton XML par contre, si tu affiches le responseXML.firstChild et que ça te dit "parseerror" (sous Firefox en tout cas) c'est que ton XML était mal formé et n'a pas pu être parsé
  • Accessoirement je vois pas trop comment tu peux trouver la longueur d'une node XML, ça a pas vraiment de sens [:dawa]
  • childNodes prend un S, parce qu'il y en a plusieurs, de nodes enfant, la pluspart du temps
  • anapajari est un gros mauvais :o


  • ah d'accord
  • Firefox m'affiche "[object Element]" à l'affichage de responseXML.firstChild, donc pas de parse error à priori.
  • je débute, je patauge un peu dans ce concept de nodes, de chlid, etc. ...
  • certes [:prodigy] du coup, IE m'indique "'null' a la valeur Null ou n'est pas un objet" pour la ligne :

var nameNode = comroot.getElementsByTagName("nom" )[0];


  • je retiens :jap: :D


Message édité par MossieurPropre le 17-12-2006 à 21:45:05
n°1492467
masklinn
í dag viðrar vel til loftárása
Posté le 17-12-2006 à 21:58:59  profilanswer
 

Sous firefox, tu devrais installer et apprendre à utiliser Firebug, j'pense que ça t'aiderait pas mal.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1492468
MossieurPr​opre
I d͟o̩n᷃'̵t͖ give a shit
Posté le 17-12-2006 à 22:00:05  profilanswer
 

merci bien, je vais regarder ça de plus près :jap:

n°1492471
masklinn
í dag viðrar vel til loftárása
Posté le 17-12-2006 à 22:04:29  profilanswer
 

Pour le moment, tu devrais commencer par Logging, c'est l'une des fondations de Firebug et l'une de ses grandes forces.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1492473
MossieurPr​opre
I d͟o̩n᷃'̵t͖ give a shit
Posté le 17-12-2006 à 22:21:24  profilanswer
 

ça m'a l'air vachement bien foutu comme truc, je pense que ça devrait m'aider. Je reviendrais poster mes résultats, ça pourrait servir à d'autres :jap:

n°1492532
anapajari
s/travail/glanding on hfr/gs;
Posté le 18-12-2006 à 09:30:57  profilanswer
 

masklinn a écrit :

  • anapajari est un gros mauvais :o

[:grinking]  disons que sur ce coup là, j'ai bien raconté nawak  

n°1493756
towak
Posté le 19-12-2006 à 20:13:01  profilanswer
 

C'est la guerre des Titans, ici...
 
Par hasard, moi aussi je tente de mettre un place un parcing d'un XML par JavaScript  :pt1cable:  :pt1cable:
 
C'est un bazard, je vous en épargne... Je suis débutant...
Mais currieusement, j'ai découvert sur net quelque chose, qui pour une fois marche dans Safari et pas ailleurs ! Il est ici :
http://www.aliasdmc.fr/coursjavas/ [...] pt166.html
Puis ici, il ya quelque chose qui a l'air d'être claire et simple, mais je n'ai pas réussi de le faire marcher sur aucun exporateur sur Mac :
http://www.ccim.be/ccim328/xml/xsl_javascript.html
 
Peut-être il ne manque à chaque fois qu'un petit quelque chose ?
 
J'ai une idée : quelqu'un serait capable de publier un petit ensemble html - javascript - xml qui marcherait de partout ? Le premier qui réussi aura la récompense de... On pourrait se cotiser  :whistle:
 
Si non, au moins, ça vous inspire de commentaires ? (Ces deux exemples...)
 
A++

n°1493812
MossieurPr​opre
I d͟o̩n᷃'̵t͖ give a shit
Posté le 19-12-2006 à 22:16:49  profilanswer
 

moi, je comprends plus ...
 
Voici un bout de mon code, en fait les premières lignes de ma fonction de parsing du XML :
 

if (_xmlHttp.readyState==4 && _xmlHttp.status == 200)  
{
    var docXML = _xmlHttp.responseXML;
    alert(docXML.childNodes.length);


 
Et là, Firefox, Safari me donnent "1" pour l'alert, le script continue donc et fonctionne bien ; alors que IE me donne "0" et ne va pas plus loin ...
 
Pour rappel, voici le XML généré :
 

<exemple>
   <commentaires>
      <table>commentaires</table>
      <nom>Cricri</nom>
      <date>1165841476</date>
      <photo>d10.diapo_bouffe_cricri19</photo>
      <comment>C'est un peu ça sauf que c'est l'inverse</comment>
   </commentaires>
</exemple>


 
Bien évidemment, dans mon fichier PHP chargé de le générer, on trouve ceci :
 

header('Content-Type: text/xml');


 
Le problème ne venant donc pas d'un type MIME erroné. Mais d'où, alors ?


Message édité par MossieurPropre le 19-12-2006 à 22:18:12
n°1493897
MossieurPr​opre
I d͟o̩n᷃'̵t͖ give a shit
Posté le 20-12-2006 à 09:28:17  profilanswer
 

up du mercredi matin ?

n°1493901
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-12-2006 à 09:32:20  profilanswer
 

ajax c'est toujours la merde à debugger :o
Donc juste avec ce que tu as donné ça va pas être facile!
Sur IE tu es sur d'avoir un retour ? ou même d'avoir bien effectué ton appel?

n°1493903
sircam
I Like Trains
Posté le 20-12-2006 à 09:37:55  profilanswer
 

anapajari a écrit :

ajax c'est toujours la merde à debugger :o


 [:moundir]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1493908
MossieurPr​opre
I d͟o̩n᷃'̵t͖ give a shit
Posté le 20-12-2006 à 09:43:57  profilanswer
 

anapajari a écrit :

ajax c'est toujours la merde à debugger :o
Donc juste avec ce que tu as donné ça va pas être facile!
Sur IE tu es sur d'avoir un retour ? ou même d'avoir bien effectué ton appel?


 

alert (_xmlHttp.responseText);

m'affiche bien le contenu XML généré par PHP, donc à priori, le retour semble être bon :/

n°1493927
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-12-2006 à 10:04:49  profilanswer
 

si tu fais un alert(_xmlHttp.responseText.rootNode.tagName); t'as bien exemple?

n°1493951
MossieurPr​opre
I d͟o̩n᷃'̵t͖ give a shit
Posté le 20-12-2006 à 10:36:56  profilanswer
 

anapajari a écrit :

si tu fais un alert(_xmlHttp.responseText.rootNode.tagName); t'as bien exemple?


 
FF semble bloquer dessus, IE ne me met pas d'erreur à cette ligne, mais ne va pas plus loin.
 
J'ai tenté de modifier mon script PHP générateur de XML, en mettant des "\n" à la fin de chacune des lignes XML générée. Voyant que ça ne marche pas trop sous FF pour la suite de mon parsing, j'ai retiré ces modifications. Et maintenant, là où tout passe avec FF, IE m'indique un _xmlHttp.responseXML.childNodes.length égal à 2 ... :heink:

n°1493952
masklinn
í dag viðrar vel til loftárása
Posté le 20-12-2006 à 10:37:46  profilanswer
 

MossieurPropre a écrit :

alert (_xmlHttp.responseText);

m'affiche bien le contenu XML généré par PHP, donc à priori, le retour semble être bon :/


En même temps responseText on s'en fout, il est trivial d'avoir un responseText mais pas de responseXML


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1494518
MossieurPr​opre
I d͟o̩n᷃'̵t͖ give a shit
Posté le 20-12-2006 à 20:13:54  profilanswer
 

up :(

n°1494622
MossieurPr​opre
I d͟o̩n᷃'̵t͖ give a shit
Posté le 21-12-2006 à 07:29:13  profilanswer
 

personne ?

n°1494661
anapajari
s/travail/glanding on hfr/gs;
Posté le 21-12-2006 à 09:41:27  profilanswer
 

envoies tout le code(php+js) sinon on s'en sortira pas ...

n°1495084
MossieurPr​opre
I d͟o̩n᷃'̵t͖ give a shit
Posté le 21-12-2006 à 22:19:05  profilanswer
 

wokay !
 
JS/HTML :
 

Code :
  1. <!--
  2.   -- AJAX Test 1
  3.   --
  4.   -- Aurélien Christman - 2006
  5.   --
  6.   -- Récupère les dernières entrées du livre d'or et des commentaires
  7.   -- de http://cecilou.proprenetworks.net et les affiche.
  8.   -- Notez que ceci est une page HTML, et non PHP.
  9.   --
  10.   -->
  11. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  12. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  13. <head>
  14. <title>AJAX Test 01 ::</title>
  15. <link rel="stylesheet" href="style.css" type="text/css" />
  16. </head>
  17. <script type="text/javascript">
  18. _xmlHttp = null;
  19. var mouseState = 0;
  20. var xpos = 0;
  21. var ypos = 0;
  22. var definedID = 0;
  23. function getXMLHTTP() {
  24.     var xhr=null;
  25.    
  26.     if (window.XMLHttpRequest) {
  27.         xhr = new XMLHttpRequest();
  28.     }
  29.     else if (window.ActiveXObject) { // Internet Explorer
  30.         try {
  31.             xhr = new ActiveXObject("Msxml2.XMLHTTP" );
  32.         } catch(e) {
  33.             try {
  34.                 xhr = new ActiveXObject("Microsoft.XMLHTTP" );
  35.             } catch(e1) {
  36.                 xhr = null;
  37.             }
  38.         }
  39.     }
  40.     else
  41.     { // XMLHttpRequest non supporté par le navigateur
  42.         alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
  43.     }
  44. return xhr;
  45. }
  46. function test01()
  47. {
  48. /* if (_xmlHttp&&_xmlHttp.readyState!=0) {
  49.  _xmlHttp.abord();
  50. }*/
  51. _xmlHttp=getXMLHTTP();
  52.     //on définit l'appel de la fonction au retour serveur
  53.     _xmlHttp.onreadystatechange = function() { test01IsBack(); };
  54. document.getElementById("message" ).className="attente_on";
  55.     _xmlHttp.open("GET", "http://mp.proprenetworks.net/AJAX/test01.php", true);
  56.     _xmlHttp.send(null);
  57. }
  58. function test01IsBack()
  59. {
  60.     if (_xmlHttp.readyState==4 && _xmlHttp.status == 200)
  61.     {
  62.        var docXML = _xmlHttp.responseXML;
  63.  alert (_xmlHttp.responseText);
  64. //  alert (_xmlHttp.responseText.rootNode.tagName);
  65.  alert(docXML.childNodes.length);
  66.  var comroot = docXML.firstChild.firstChild.childNodes;
  67.      var nom = comroot[1].firstChild.nodeValue;
  68.      var date = comroot[2].firstChild.nodeValue;
  69.      var com = comroot[4].firstChild.nodeValue;
  70.      var dateMsg = new Date;
  71.      dateMsg.setTime(date);
  72.      var lastRefresh = new Date;
  73.     
  74.      var msgMonth = dateMsg.getUTCMonth();
  75.      msgMonth++;
  76.     
  77.      document.getElementById("message" ).className="attente_off";
  78.      document.getElementById("lrDate" ).innerHTML="Dernier rafraichissement : " + lastRefresh.getHours() + "H" + lastRefresh.getMinutes() + ":" + lastRefresh.getSeconds() + "&nbsp;&nbsp;&nbsp;&nbsp;<input type = \"button\" onClick=\"test01();\" value = \"Rafraichir\">";
  79.      document.getElementById("et" ).innerHTML="<b>Dernier commentaire par " + nom + " le " + dateMsg.getUTCDate() + "/" + msgMonth + "/" + dateMsg.getUTCFullYear() + " à " + dateMsg.getUTCHours() + ":" + dateMsg.getUTCMinutes() + ":" + dateMsg.getUTCSeconds() + "</b>";
  80.      document.getElementById("crps" ).innerHTML=com;
  81.     }
  82. }
  83. function mouseDefineID(id) {
  84. definedID = id;
  85. }
  86. function mouseDown() {
  87. mouseState = definedID;
  88. }
  89. function mouseUp() {
  90. mouseState = 0;
  91. definedID = 0;
  92. }
  93. function mouseMove() {
  94. document.onmousemove = captureMousePosition;
  95. var posx = xpos + "px;"
  96. var posy = ypos + "px;"
  97. if (mouseState == 1) {
  98. // document.getElementById("aff" ).style.left = posx;
  99. // document.getElementById("aff" ).style.top = posy;
  100. } else if (mouseState == 2) {
  101.  //alert (posx);
  102. // document.getElementById("aff2" ).style.left = posx;
  103. // document.getElementById("aff2" ).style.top = posy;
  104. }
  105. }
  106. function captureMousePosition(e) {
  107. // xpos = e.pageX;
  108. // ypos = e.pageY;
  109.  document.getElementById("pos" ).innerHTML="x : " + xpos + "px. | y : " + ypos + "px; | mouseState : " + mouseState + " | aff2 x, y : " + document.getElementById("aff2" ).style.left + ", " + document.getElementById("aff2" ).style.top;
  110. }
  111. </script>
  112. <body onMouseUp="javascript:mouseUp();" onMouseDown="javascript:mouseDown();" onMouseMove="javascript:mouseMove();">
  113. <div class="upbar">
  114. <div id="lrDate">
  115. Initialisation ...
  116. </div>
  117. <div id="pos">
  118. </div>
  119. </div>
  120. <div class="affichage" id="aff" style="top: 100px; left: 50px;">
  121. <div class="entete" id="et" onMouseDown="mouseDefineID(1);">
  122. <b>Dernier commentaire</b>
  123. </div>
  124. <div class="corps" id="crps">
  125. </div>
  126. </div>
  127. <div class="affichage" id="aff2" style="top: 100px; left: 500px;">
  128. <div class="entete" id="et" onMouseDown="mouseDefineID(2);">
  129. <b>Test2</b>
  130. </div>
  131. <div class="corps" id="crps">
  132. Yeehaa.
  133. </div>
  134. </div>
  135. <div class="attente_off" id="message">Veuillez patienter...</div>
  136. <script type="text/javascript">test01();</script>
  137. </body>
  138. </html>


 
pas mal de bordel autour de tout ça, j'en profite pour faire des tests (notemment les déplacement de div à la souris)
 
CSS (même si on s'en fout) :
 

* {
 font-family: Verdana;
 font-size : 12px;  
}
 
.affichage {
 position: absolute;
 width: 400px;
 height: 200px;
 background-color: #ffefd4;
}
 
.entete {
 background-color: #fcd083;
}
 
.upbar {
 background-color: #aaaaaa;
 width: 100%;
}
 
.attente_off {
 visibility: hidden;
 position: absolute;
 left: 75px;
 top: 75px;
 width: 200px;
 height: 40px;
}
 
.attente_on {
 position: absolute;
 left: 75px;
 top: 75px;
 visibility: visible;
 font-size : 10px;  
 font-family: Verdana;
 border-style: solid;
 border-color: #000000;
 width: 300px;
 height: 40px;
 background-color: #FF0000;
 text-align: center;
}


 
PHP :
 

Code :
  1. <?php
  2. /*
  3. * AJAX Test 1
  4. * Aurélien Christman - 2006
  5. *
  6. * Annexe à test01.html
  7. *
  8. */
  9. header('Content-Type: text/xml');
  10. echo "<?xml version=\"1.0\" encoding=\"iso-8859-15\"?>";
  11. echo "<exemple>";
  12. echo "<commentaires>";
  13. $connect = mysql_connect ("localhost", "******", "******" );
  14. $db = mysql_query ("USE cecilou;" );
  15. $get_last_post = mysql_query ("SELECT * FROM commentaires ORDER BY date DESC LIMIT 0, 1;" );
  16. $last_post_user = mysql_result ($get_last_post, 0, login);
  17. $last_post_date = mysql_result ($get_last_post, 0, date);
  18. $last_post_photo = mysql_result ($get_last_post, 0, nom_photo);
  19. $last_post_comment = mysql_result ($get_last_post, 0, comment);
  20. echo "<table>commentaires</table>";
  21. echo "<nom>$last_post_user</nom>";
  22. $date = str_replace ("\n", "", $last_post_date);
  23. echo "<date>$date</date>";
  24. echo "<photo>$last_post_photo</photo>";
  25. echo "<comment>$last_post_comment</comment>";
  26. echo "</commentaires>";
  27. echo "</exemple>";
  28. ?>


 
en espérant que ça puisse aider :/

n°1495211
anapajari
s/travail/glanding on hfr/gs;
Posté le 22-12-2006 à 10:46:14  profilanswer
 

tiens remplace juste ton initialisation de comroot par:

Code :
  1. var comroot = docXML.getElementsByTagName('exemple').item(0).getElementsByTagName('commentaires').item(0).childNodes;


et ça devrait roulèze.

 

Par ailleurs les commentaires dans une page html avant le doctype c'est pas une bonne idée!
et _xmlHttp = null; meriterait un petit var devant!

Message cité 1 fois
Message édité par anapajari le 22-12-2006 à 10:46:50
n°1495225
MossieurPr​opre
I d͟o̩n᷃'̵t͖ give a shit
Posté le 22-12-2006 à 11:06:14  profilanswer
 

anapajari a écrit :

tiens remplace juste ton initialisation de comroot par:

Code :
  1. var comroot = docXML.getElementsByTagName('exemple').item(0).getElementsByTagName('commentaires').item(0).childNodes;


et ça devrait roulèze.
 
Par ailleurs les commentaires dans une page html avant le doctype c'est pas une bonne idée!
et _xmlHttp = null; meriterait un petit var devant!


 
en effet, ça roulaize, merci beaucoup :jap:
 
Mais dans mon esprit, faire

Code :
  1. docXML.getElementsByTagName('exemple')


revient à la même chose que faire

Code :
  1. docXML.firstChild


 
Où est la différence ?


---------------
www.novemberguitars.com
n°1520400
krovomi
Posté le 26-02-2007 à 18:17:05  profilanswer
 

Bonjour, j'ai le meme probleme mais moi quand je fais un alert de  
docXML.getElementsByTagName('films').item(0).getElementsByTagName('film').item(0).childNodes;
 
en adaptant a mon XML, il me fait un "object nodelist", alors que j'aimerai simplement la liste des films (pour mon exemple).
 
par contre quand je fais un : alert(xmlhttp.responseXML.getElementsByTagName('films').item(0).getElementsByTagName('film').length)), il me sort bien le nombre de films qui se trouvent dans le fichier xml.
 
Merci

n°1520403
masklinn
í dag viðrar vel til loftárása
Posté le 26-02-2007 à 18:18:36  profilanswer
 

krovomi a écrit :

Bonjour, j'ai le meme probleme mais moi quand je fais un alert de  
docXML.getElementsByTagName('films').item(0).getElementsByTagName('film').item(0).childNodes;
 
en adaptant a mon XML, il me fait un "object nodelist", alors que j'aimerai simplement la liste des films (pour mon exemple).
 
par contre quand je fais un : alert(xmlhttp.responseXML.getElementsByTagName('films').item(0).getElementsByTagName('film').length)), il me sort bien le nombre de films qui se trouvent dans le fichier xml.
 
Merci


getElementsByTagName (et childNodes) sortent une liste de node, si tu veux afficher ce qu'il y a dedans il faut l'extraire manuellement [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1520722
krovomi
Posté le 27-02-2007 à 10:06:08  profilanswer
 

et comment on fait ? (je suis un newbi en DOM).
Tu veux dire avec une boucle ou un truc comme ca ?
Si par exemple je veux afficher seulement le 31 eme film, comment je procède au niveau du code ?
Merci


Message édité par krovomi le 27-02-2007 à 10:07:50
n°1520725
anapajari
s/travail/glanding on hfr/gs;
Posté le 27-02-2007 à 10:08:13  profilanswer
 

bin c'est un tableau, donc on s'en sert comme d'un tableau :o
tu peux jeter un oeil sur la la doc des fois ça aide [:tinostar]

n°1520743
krovomi
Posté le 27-02-2007 à 10:24:42  profilanswer
 

hummm mouais mais ca ne me dit pas comment faire pour afficher une valeur ca...

n°1520752
anapajari
s/travail/glanding on hfr/gs;
Posté le 27-02-2007 à 10:39:55  profilanswer
 

gné [:w3c compliant]
Tu as un exemple de boucle sur la récupération des différents node de liste remontée par un getElementsByTagName.  
Que veux-tu de plus?

n°1520791
krovomi
Posté le 27-02-2007 à 11:22:53  profilanswer
 

j'ai ca : xmlhttp.responseXML.getElementsByTagName('films').item(0).getElementsByTagName('film').childNodes[1].getAttribute("titre" ), et lorsque je fait un alert de ca, je devrais si je ne me trompe pas(je me trompe forcemment vu que ca ne l'affiche pas) afficher le titre du premier film.
Mon XML a cette architechture :  
<films>
<film id="CO284853" titre="10 Canoës, 150 lances et 3 épouses"/>
<film id="CO278917" titre="12 h 08 à l'est de Bucarest"/>
<film id="CO192322" titre="2046"/>
.....
</films>,
ce que je voudrais comprendre c'est simplement pourquoi il ne va pas chercher le titre de mon film, apres je vois comment le faire dans une boucle ca n'est pas le probleme...

n°1520841
krovomi
Posté le 27-02-2007 à 11:56:27  profilanswer
 

personne ne sait ?

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [AJAX] Parsing d'un XML, lapin komprÿ ...

 

Sujets relatifs
[AJAX]Return dans un onreadystatechangeErreur AJAX, besoin de vous pour tester !
Raffraichir 2 calques en Ajax ?[RESOLU] [AJAX] probleme d'envoi d'un "+" par POST
Mettre à disposition du XML dynamiquement (et comment le lire)XML : interface entre applis et SGBD ?
XML document à partir d'une stringParser un fichier XML en PHP
Petit topo sur les Frameworks AJAXproblème de 'quote' dan sune syntaxe XML
Plus de sujets relatifs à : [AJAX] Parsing d'un XML, lapin komprÿ ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR