jQuery: lire le fichier texte à partir du système de fichiers
Je suis en train de lire un fichier texte à l'aide de jquery, comme ceci:
//LOAD file and split line by line and append divs
$.get('myFile.txt', function(data) {
var lines = data.split("\n");
$.each(lines, function(n, elem) {
$('#myContainer').append('<div>' + elem + '</div>');
});
});
Dans google chrome, j'obtiens:
XMLHttpRequest cannot load file:///C:/myPath/myFile.txt. Origin null is not allowed by Access-Control-Allow-Origin.
Firefox affiche pas d'erreur mais le code n'est pas exécuté (j'ai des points d'arrêt dans firebug et de la fonction anonyme, n'est jamais à court).
Toute aide appréciée!
MODIFIER:
:
- utiliser le fichier chemin d'accès complet
- lancement
google chrome avec
"--allow-file-access-from-files"
maintenant ça fonctionne OK!
source d'informationauteur JohnIdol | 2010-12-10
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas charger un fichier à partir de votre système de fichiers local, comme cela, vous avez besoin de la mettre sur un serveur web et de le charger à partir de là. Sur le même site que vous avez le JavaScript chargé de.
EDIT: en Regardant ce filvous pouvez commencer à chrome à l'aide de l'option
--allow-file-access-from-files
ce qui permettrait l'accès aux fichiers locaux.spécifier le chemin d'accès complet de l'url du fichier
Cela fonctionne très bien dans firefox au moins.
Le problème que j'ai en face est, que j'ai eu un objet XML à la place d'un texte en clair de la chaîne. La lecture d'un fichier xml à partir de mon disque local fonctionne très bien (même répertoire que le fichier html), donc je ne vois pas pourquoi la lecture d'un fichier texte serait un problème.
J'ai pensé que j'ai besoin de dire jquery pour passer une chaîne de caractères à la place d'un objet XML. Qui est ce que j'ai fait, et il a finalement travaillé:
Note l'ajout de " "texte" " à la fin. Cela dit jquery pour transmettre le contenu de 'file.txt" comme une chaîne de caractères à la place d'un objet XML. La boîte d'alerte affiche le contenu du fichier texte. Si vous retirez le " "texte" " à la fin, la boîte d'alerte va dire 'objet XML'.
Une solution de contournement pour ce que j'ai utilisé était d'inclure les données dans un fichier js, qui implémente une fonction retournant les données brutes comme une chaîne de caractères:
html:
script.js:
Le voir en action ici- http://plnkr.co/edit/EllyY7nsEjhLMIZ4clyv?p=preview
L'inconvénient, c'est que vous avez à faire un peu de prétraitement sur le dossier de prise en charge multilines (ajout de chaque ligne dans la chaîne de
'\n\'
).c'est un travail
Cela ne fonctionne pas et il ne devrait pas parce qu'il serait un immense trou de sécurité.
Ont un coup d'oeil à la nouvelle Système de fichiers de l'API. Il vous permet de demander l'accès à un virtuel, bac à sable du système de fichiers régis par le navigateur. Vous devez demander à l'utilisateur de télécharger leur fichier dans le bac à sable du système de fichiers une fois, mais par la suite, vous pouvez travailler avec beaucoup d'élégance.
Alors que c'est certainement l'avenir, il est encore très expérimental et ne fonctionne que dans Google Chrome, autant que CanIUse sait.
Tant que le fichier n'a pas besoin d'être généré dynamiquement, par exemple, un simple texte ou un fichier html, vous pouvez le tester en local SANS serveur web, il suffit d'utiliser un chemin relatif.
Vous ne pouvez pas faire cela sans le SERVEUR WEB!!! Chrome envoie XMLHttpRequest pour le système qui ressemble à quelque chose comme ceci
Et le système d'exploitation n'est pas à l'écoute sur le port 80 pour recevoir ce! Et même si elle l'est, elle doit mettre en œuvre le protocole HTTP pour communiquer avec le navigateur...
De le faire fonctionner, vous devez avoir SERVEUR WEB installé sur votre système, qui sera à l'écoute sur le port 80 et de la rendre disponible vos fichiers via une connexion HTTP, rendant ainsi votre code exécutable.