2012-10-29 2 views
0

Je sais que cette question a déjà été posée, mais j'apprends toujours JavaScript, et j'ai de la difficulté à voir à travers la complexité des réponses des autres. J'ai un fichier texte dans le même répertoire qu'un fichier HTML qui lit JavaScript, et ce fichier texte contient littéralement une ligne. Je veux être en mesure de saisir cette ligne sur le fichier texte et le mettre dans une chaîne. Qu'est-ce qu'un moyen très simple de faire cela qui fonctionnera dans FF, IE et Chrome, et est, à part le choix du navigateur, est assez universellement valable? Encore une fois, je sais que cela a déjà été demandé, mais j'ai de la difficulté à choisir la vraie méthode à partir de la complexité de l'exemple de code que j'ai vu ailleurs. Merci!Quelle est la manière la plus simple de lire un fichier en JavaScript?

+0

cela fait une différence dont la sécurité bac à sable est la page en cours d'exécution. En supposant que vous l'exécutez dans localhost, vous pouvez utiliser XmlHttpRequest (AJAX), mais si vous utilisez 'file: //', alors il diffère pour chaque navigateur. – zzzzBov

+0

http://stackoverflow.com/a/8137303/363605 – jsweazy

Répondre

3

Utiliser jQuery méthode get http://api.jquery.com/jQuery.get/

$.get(url).success(function(data, status, response) { 
    var text = response.responseText; 
    // use your one line text stored in text variable here 
} 

L'url variable peut être relative, de sorte que vous pouvez mettre le nom du fichier texte là. Par exemple, si votre fichier texte est appelé « MyText.txt » et dans le même répertoire du script d'y accéder, vous mettez:

$.get("mytext.txt").success(function(data, status, response) { 
     var text = response.responseText; 
     // use your one line text stored in text variable here 
    } 

Notez cette réponse suppose que vous utilisez http pour accéder au fichier texte et les deux scripts et le fichier texte est dans le même domaine.

2

Cette opération est délicate car, par défaut, la plupart des navigateurs n'autorisent pas JS à ouvrir des fichiers localement à partir du système de fichiers de l'ordinateur. Vous pouvez cependant demander le fichier texte à partir d'un serveur Web en utilisant ajax. Pour ce faire, je recommanderais jQuery car il sera très "universellement valide" comme vous le dites. Lors d'appels ajax, la demande doit respecter la même politique d'origine. En termes simples, si vous êtes sur www.mysite.com, vous pouvez demander www.mysite.com/aTextFile.txt mais vous ne pourrez pas demander www.someothersite.com/aTextFile.txt

Pour cela, jquery, voir la réponse de momo. J'allais taper la même chose mais il me battait dessus.

+0

+1 Excellent point sur la même politique de domaine – momo

0

La façon la plus simple que je peux penser est d'utiliser un langage côté serveur pour sortir le contenu du document dans la page quelque part (comme un textarea invisible), et juste avoir lu cela. Pas d'AJAX, pas de bibliothèques, et c'est vraiment rapide.

<textarea id="textarea"><?php include("test.txt") ?></textarea> 

<script> 
var str = document.getElementById("textarea").value; 
</script> 

Maintenant, ce n'est pas toujours la meilleure façon, mais par rapport à l'utilisation partout Javascript asynchrone avec des cadres lourds au détriment des performances SEO ...

Questions connexes