Si tu veux mettre du texte avec des balises html dans ton xml, mets le tout dans un CDATA.
Version imprimable
Si tu veux mettre du texte avec des balises html dans ton xml, mets le tout dans un CDATA.
Oups autant pour moi, le innerHTML n'y était pas lors de l'erreur c un truc que j'ai testé après.
Quand je mets ça:
Je reçois une alerte avec 'null' et une erreur comme quoi undefined est null ou n'est pas un objet.Citation:
alert(xhr.responseXML.getElementsByTagName("contenu")[0]);
Quand je mets ça:
J'ai même plus d'alerte qui s'affiche et c'est écrit objet requis. Et je peux rajouter le documentElement ça change rien.Citation:
alert(xhr.responseXML.getElementsByTagName("contenu")[0].nodeValue);
Et ta ResponseText elle vaut quoi ?
Ou avec le truc <?xml..> en plus mais là j'l'ai viré.Citation:
<retour>
<contenu>pomme</contenu>
<keywords>fgr</keywords>
</retour>
Ok ok... tu vas jamais t'en sortir...
essaye :
Code:xhr.responseXML.getElementsByTagName("contenu")[0].firstChild.nodeValue
Ok ok... je suis un peu a court de solutions...
Une dernière mais bon c'est peut-etre une grosse connerie mais au point où on en est...:lol:
Si tu rajoute une balise qui englobe tout (par exemple : <all>), et t'essaye :
Voila, après j'abandonne...:aie:Code:
1
2
3 items = xhr.responseXML.getElementsByTagName("retour") alert(items[0].getElementsByTagName("contenu")[0].firstChild.nodeValue)
Bonne nouvelle.... Ca marche pas :aie: !!!!!!!!!!!!
C'est chiant quand même.
Bon sinon après avoir changé les " par des ' dans le js ça a changé il me semble (enfin cerveau embrouillé à force :mrgreen: )
Voici ce que j'ai:me renvoi [objet] donc c'est qu'il a récup quelque chose non?Citation:
alert(xhr.responseXML.getElementsByTagName('contenu'));
Ensuite si j'y met un [0] après il me dit: null et si j'met encore en plus un nodeValue il me dit objet requis (erreur quoi).
Et si je met le nodeValue mais pas le [0] j'ai un undefined... Une piste peut être???
Et avec ma solution du dessus, si tu faisais un :
Ca donnait quoi ?Code:alert(items.length)
J'ai un joli 0 :cry: Donc c'est qu'il ne récupère rien? :(
Hum... j'ai re-regardé le code de ton premier post, et juste pour me rassurer, ce bout de code, tu l'as modifié quand même :
???Code:var retour = alert(xhr.responseXML.?????????????????????????????);
:aie: :aie: oui quand même fort heureusement. Bon ça m'arrive de faire des conneries de ce genre mais là j'ai enlevé.
La j'ai donc ça dans le fichier js:
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 function makeRequest(page, nom) { var xhr; if(window.XMLHttpRequest || window.ActiveXObject) { if(window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else { try { xhr = new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) { xhr = new ActiveXObject('Microsoft.XMLHTTP'); } } } else { alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest..."); return; } xhr.onreadystatechange = function() { if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) { var retour = alert(xhr.responseXML.getElementsByTagName('contenu').length); } } document.getElementById('page').value = page ; document.getElementById('fichier').innerText = nom ; document.getElementById('titre').value = nom ; xhr.open('GET', 'request.php?page=' + page + '&titre=' + nom, true); xhr.send(null); }
length parce que j'ai testé si y avait quelque chose et j'peux pas mettre [0] ou .item(0) après getElementsByTagName('contenu') sinon ça marque objet requis.
Et le php:
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 <?PHP session_start(); if (isset($_SESSION['pomme']) && isset($_SESSION['orange'])) { include ('../sql.php'); mysql_connect($host, $user, $password); mysql_select_db($db); $reponse = mysql_query('SELECT * FROM contenu WHERE page="'.$_GET['page'].'"') or die(mysql_error('problèmes de connexion à la base de données')); $donnees = mysql_fetch_array($reponse); if (isset($_GET['page']) && $_GET['page'] != NULL) { if (!empty($donnees['contenu']) && !empty($donnees['page'])) { header('Content-Type: text/xml') echo '<?xml version="1.0" encoding="UTF-8"?><contenu>'.$donnees['contenu'].'</contenu><keywords>&fgr</keywords>'; } elseif (empty($donnees['contenu']) && empty($donnees['page'])) { mysql_query("INSERT INTO contenu (`id` ,`page` ,`titre` ,`contenu` ,`keywords`) VALUES ('', '".$_GET['page']."','".$_GET['titre']."', 'Aucun contenu pour cette page pour le moment.', 'Insérer les mots clés ici')"); $reponse2 = mysql_query('SELECT * FROM contenu WHERE page="'.$_GET['page'].'"') or die(mysql_error('problèmes de connexion à la base de données')); $donnees2 = mysql_fetch_array($reponse2); echo '<retour>'; echo '<contenu>'.$donnees2['contenu'].'</contenu>'; echo '<keywords>'.$donnees2['keywords'].'</keywords>'; echo '</retour>'; } else echo "y a une couille dans le pâté"; } else echo 'c\'est vide ou y a pas de variable chargée'; } else echo 't\'as cru que c\'était la fête toi?'; ?>
Ta laissé les accents dans ton texte ??
Ca sert pas a grand chose ca...Code:var retour = alert(xhr.responseXML.getElementsByTagName('contenu').length);
un :suffitCode:alert(xhr.responseXML.getElementsByTagName('contenu').length);
Non a pu d'accents. Le var retour c'est juste parce que je renvoyais dans un autre truc et que j'ai pas enlevé pour le test.
J'y comprend vraiment rien! Je vois pas d'où peut venir le souci là, mais vraiment pas.
Pensez vous que ça puisse venir du fichier index contenu le fichier l'include du fichier js dans l'entête et le include de mon 'explorer' avec les onlick qui lance la fonction makRequest???
Tu as essayé avec :
Code:
1
2 var retour = xhr.responseXML.getElementsByTagName('contenu'); alert(retour.length);
Ce xml ci est mal formé, donc si tu passes par la, c'est normal que ton xhr.responseXML plante.Code:
1
2
3
4
5
6
7if (!empty($donnees['contenu']) && !empty($donnees['page'])) { header('Content-Type: text/xml') echo '<?xml version="1.0" encoding="UTF-8"?><contenu>'.$donnees['contenu'].'</contenu><keywords>&fgr</keywords>'; }
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 elseif (empty($donnees['contenu']) && empty($donnees['page'])) { mysql_query("INSERT INTO contenu (`id` ,`page` ,`titre` ,`contenu` ,`keywords`) VALUES ('', '".$_GET['page']."','".$_GET['titre']."', 'Aucun contenu pour cette page pour le moment.', 'Insérer les mots clés ici')"); $reponse2 = mysql_query('SELECT * FROM contenu WHERE page="'.$_GET['page'].'"') or die(mysql_error('problèmes de connexion à la base de données')); $donnees2 = mysql_fetch_array($reponse2); echo '<retour>'; echo '<contenu>'.$donnees2['contenu'].'</contenu>'; echo '<keywords>'.$donnees2['keywords'].'</keywords>'; echo '</retour>'; }
Ici, tu n'as pas de header text/xml, c'est donc aussi normal que ton xhr.responseXML plante
Bon y a du bon :king:
Voici le JS:
et le PHP:Code:
1
2
3 var retour = xhr.responseXML.getElementsByTagName('keywords'); alert(retour.length);
Code:
1
2
3
4
5
6 header('Content-Type: text/xml'); echo '<retour>'; echo '<contenu>'.$donnees['contenu'].'</contenu>'; echo '<keywords>'.$donnees['keywords'].'</keywords>'; echo '</retour>';
Alors avec ça ça m'affiche enfin 1!!!! Euh par contre c'est bien mais si j'fais
retour[0].nodeValue ou encore retour.item(0).nodeValue il ne se passe rien même si j'enlève le [0] :(
J'ai soit un null soit un undefined.
Mais on progresse, merci merci. On y est presque :mrgreen:
Pour accéder au contenu de la balise, il faut faire retour[0].firstChild.nodeValue
:love: EXCELLENT!!!!!!!!!!! Ca fonctionne!!!
Merci W :mrgreen:
Bon maintenant j'ai un autre souci, c'est qu'entre ces balises on va y trouver du code html. Donc la j'ai testé avec une phrase simple, pas de soucis, mais si j'y mets des é ça fonctionne pas :( ça renvoi une erreur. Après ça ce sera fini :mouarf: