11548 sujets

JavaScript, DOM et API Web HTML5

Hello!

Je me bats depuis plusieurs heures pour essayer de faire marcher mon script javascript qui lit simplement un fichier en utilisant XMLHttpRequest. Ce script marche pour un fichier local (même nom de domaine) mais pas pour un fichier distant (nom de domaine différent). C'est con justement quand le but dudit script est de lire un RSS distant Smiley sweatdrop
Voici mon code (c'est du debug):
xmlReq = new XMLHttpRequest();
function init() {
	xmlReq.onreadystatechange = function() {
		if(xmlReq.readyState == 4) {
			if(xmlReq.status == 200) {
				window.alert(xmlReq.responseText);
			}
			else {
				window.alert("Pas possible");
			}
		}
	}
	xmlReq.open("GET", "http://www.foolstep.com/syndication/news-rss.xml", true);
	xmlReq.send(null);
}

init();


Mon code est tellement simple que je ne pense pas avoir fait quelque chose de mal?
Du coup, je ne comprends pas comment les autres sites comme google ou netvibes font...
Merci, je vais me lire ça tranquille ce soir!
(Par contre pourquoi, dans le web, à chaque fois qu'il y a un problème il y a un nouveau langage à apprendre... HTML, CSS, Javascript, PHP, JSON/JSONP, ... ça commence à être carrément lourd là...)
Lu!

Du coup, une question me taraude... Arrêtez-moi si je me trompe, mais là, l'accès à distance fonctionne car on accède à un fichier JSON et que donc on peut l'intégrer dans une balise script.
Dans le cas d'un RSS il ne reste plus que la solution php?
Re!

Bon ben j'ai réussi à faire ce que je voulais faire. J'ai utilisé la technique PHP à savoir un script getfile.php qui contient simplement ça:
<?php
if(isset($_GET['url'])) {
	header("Content-type: text/xml");
	echo file_get_contents(urldecode($_GET['url']));
}
?>


Et le code Javascript pour aller chercher le flux RSS ressemble à ça (enfin ses parties importantes):
// ...
xmlReq.onreadystatechange = function() {
	docXml = xmlReq.responseXML;
}
xmlReq.open("GET", "./getfile.php?url=" + encodeURI(url), true);
xmlReq.send(null);
// ...

Modifié par Creak (08 Jan 2010 - 01:23)