Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ajax + fil de syndication Atom

6 réponses
Avatar
Bul
bonjour à toutes et à tous,

je ne parviens pas à récupérer responseXML, mais
seulement responseText, pour un "fil de syndication Atom",
contrairement aux "fils RSS",
le traitement avec le DOM est donc (?!) "difficile".

j'ai mal compris quelque chose ?
y a-t-il un setRequestHeader à envoyer ?
( j'en ai essayé plusieurs, sans succès )
ou... je ne sais quoi...

ou alors ? comment, à partir de responseText, traiter
getElementsByTagName("balise"), par exemple ?

extrait de ce que je fais :
( uniquement viable avec IE, sans gestion d'erreurs,
expurgé du reste pour "simplifier" )

<html>
<body>
<script type="text/javascript">
var xml = new XMLHttpRequest();
xml.onreadystatechange = function()
{ if( xml.readyState==4 )
{ // alert(xml.responseXML.xml);
alert(xml.responseText);
}
}
// var url="http://www.codes-sources.com/rss.aspx?type=code";
var url="http://blog.webinventif.fr/atom.php";
xml.open("GET",url,true);
xml.send(null);
</script>
</body>
</html>

xml.responseXML.xml et les url (rss)
http://www.codes-sources.com/rss.aspx?type=code ( et les autres )
: ça baigne, c'est bien le contenu renvoyé.

avec http://blog.webinventif.fr/atom.php (atom)
: seul xml.responseText "répond".
xml.responseXML est "vide"


merci d'avance.

6 réponses

Avatar
Mickaël Wolff

xml.responseXML.xml et les url (rss)
http://www.codes-sources.com/rss.aspx?type=code ( et les autres )
: ça baigne, c'est bien le contenu renvoyé.

avec http://blog.webinventif.fr/atom.php (atom)
: seul xml.responseText "répond".
xml.responseXML est "vide"


Habituellement, c'est parce que le XML est mal formé, ou que le
Content-type n'est pas bon. Mais là, force est de constater qu'il semble
bien formé
<http://validator.w3.org/feed/check.cgi?url=http%3A%2F%2Fblog.webinventif.fr%2Fatom.php>.

Peut-être est-ce le Content-Type ? C'est le même dans les deux cas
(application/xhtml+xml), mais il me semble que le type devrait être
(text/xml), comme indiqué sur ce blog
<http://keelypavan.blogspot.com/2006/01/using-ajax.html> ou encore dans
la spécification
<http://www.atomenabled.org/developers/syndication/atom-format-spec.php#atom.documents>.

Un bogue d'IE ?


--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org

Avatar
Bul
merci de ta réponse Mickaël

Peut-être est-ce le Content-Type ? C'est le même dans les deux cas
(application/xhtml+xml), mais il me semble que le type devrait être
(text/xml), comme indiqué sur ce blog
si j'ajoute( déjà tenté )

xml.setRequestHeader("Content-type", "text/xml"); ou
xml.setRequestHeader("Content-type", "application/xhtml+xml");
même punition... mais ce n'est peut-être pas ce que tu voulais dire...

Un bogue d'IE ?
crotte de biques.

et à part me dire d'utiliser un autre navigateur ( mais je ne peux
pas passer outre IE ! ), une solution, une idée pour contourner ?

Cordialement.

Avatar
Bul
finalement, je vais peut-être m'en sortir avec
var xmlD = new ActiveXObject("Microsoft.XMLDOM");
qui semble fonctionner.
dès que possible, je teste plus avant, voir si tout baigne,
sinon... je reviendrais !
merci à vous.
Avatar
Bul
je me devais de confirmer que tout baigne :

<html>
<body>
<script type="text/javascript">
var xmlD = new ActiveXObject("Microsoft.XMLDOM");
xmlD.onreadystatechange = function ()
{ if (xmlD.readyState == 4)
{ alert(xmlD.getElementsByTagName("title")[0].firstChild.nodeValue); }
}
// var url="http://logitheque.com/annuaire/divers/actu3.xml";
var url="http://blog.webinventif.fr/atom.php";
xmlD.load(url);
</script>
</body>
</html>

ouf... j'ai eu peur.
Cordialement.
Avatar
Mickaël Wolff

(text/xml), comme indiqué sur ce blog
si j'ajoute( déjà tenté )

xml.setRequestHeader("Content-type", "text/xml"); ou
xml.setRequestHeader("Content-type", "application/xhtml+xml");
même punition... mais ce n'est peut-être pas ce que tu voulais dire...


Ce n'est absolument pas ce que je voulais dire ;)
XMLHTTPRequest::setRequestHeader est là pour décider du type mime du
message HTTP que tu envoie. Ça ne détermine absolument pas ce que tu vas
recevoir.

Un bogue d'IE ?
crotte de biques.

et à part me dire d'utiliser un autre navigateur ( mais je ne peux
pas passer outre IE ! ), une solution, une idée pour contourner ?


De toute façon tu ne pourras pas faire ça avec un Firefox facilement,
car le crosssite-XHR (ça se dit ?) n'est pas autorisé par défaut pour
des raisons de sécurité.

Bon courage.
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org


Avatar
Bul
j'ai du faire une fausse manip :
je ne vois pas mon dernier message... où je disais "résolu"

<html>
<body>
<script type="text/javascript">
var xmlD = new ActiveXObject("Microsoft.XMLDOM");
xmlD.onreadystatechange = function ()
{ if (xmlD.readyState == 4)
{ alert(xmlD.getElementsByTagName("title")[0].firstChild.nodeValue); }
}
// var url="http://logitheque.com/annuaire/divers/actu3.xml";
var url="http://blog.webinventif.fr/atom.php";
xmlD.load(url);
</script>
</body>
</html>


De toute façon tu ne pourras pas faire ça avec un Firefox facilement,
j'ai remarqué...


pour des raisons de sécurité.
bof... pas convaincu par l'argument !



c'est une application locale, et j'ai mis l'application ici :
http://www.javascriptfr.com/codes/UTILISATION-RSS-URSS_43691.aspx

================================================= m'écrire : http://mas.keo.in/?Bul [Mail Anti Spam]
==================================================