J'utilise le code suivant pour lire un fichier xml externe:
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET","myxmlfile.xml",false); xmlhttp.send(); xmlDoc=xmlhttp.responseXML;
Mais le code ci-dessus semble fonctionner uniquement sur Firefox et non sur Chrome / IE / Opera.
Dans Chrome, je reçois une erreur dans la console car un accès interdisciplinaire n'est pas autorisé, mais mon fichier xml, le fichier js et le fichier html sont tous dans le même dossier dans mon disque dur local.
Une aide à ce sujet?
Merci.
Vous le testez probablement localement sans un serveur http.
Fondamentalement, les requêtes ajax doivent être faites en utilisant le même domaine, si vous faites une requête ajax sur un site différent, ce sera bloqué par le navigateur (c'est une fonction de sécurité pour empêcher les personnes de lire les données du propriétaire du navigateur à partir d'un autre site web). La plupart des navigateurs bloquent l'accès au système de fichiers local de la même façon pour protéger des pièces jointes malveillantes (par exemple). Vous obtiendrez une erreur comme XMLHttpRequest cannot load file:///path/to/your/data.html. Origin null is not allowed by Access-Control-Allow-Origin.
XMLHttpRequest cannot load file:///path/to/your/data.html. Origin null is not allowed by Access-Control-Allow-Origin.
Si vous êtes sur Linux ou Mac ou que python est installé, le moyen le plus simple de démarrer un serveur http est d'utiliser la commande python -m SimpleHTTPServer
dans le répertoire racine de vos fichiers html, vous pouvez les afficher à http://localhost:8000/file.html
si vous êtes sur Windows, vous devrez peut-être configurer IIS (n'oubliez pas que IIS ne supporte pas certaines extensions de fichiers comme .json
par défaut, vous devrez peut-être la configurer).
Si vous avez toujours besoin / besoin de tester localement sans devoir utiliser un serveur http, vous pouvez exécuter Chrome avec --allow-file-access-from-files
(soit mettre à jour le raccourci vers l'exe Chrome ou exécuter Chrome depuis le terminal Avec ce commutateur).
Comme indiqué, vous devez mettre vos fichiers sur un serveur http pour tester correctement. Vous pouvez utiliser une instance Apache locale pour la tester correctement. De cette façon, vos appels ajax ne seront pas bloqués par le navigateur.