22 votes

Lecture d'un fichier texte avec jQuery

Possible Duplicate:
jquery - Lire un fichier texte?

Je veux lire un fichier texte local en utilisant jQuery. J'essaye donc ceci:

$.get('file_to_read.txt', function(data) {
   do_something_with(data)
});

Cependant, jQuery interprète "file_to_read.txt" comme un fichier html et j'obtiens une erreur Javascript car il n'est pas correctement formaté et "do_something_with" n'a pas l'effet désiré, puisque data n'est pas une chaîne.

La documentation de jQuery dit que je dois spécifier le type de données. Cependant, ils ne listent que html, xml, json et script comme types de données possibles; que dois-je faire avec un simple fichier txt que je veux charger directement dans une chaîne?

49voto

Utilisez le type de données 'text' dans votre requête $.get().

$.get('file_to_read.txt', function(data) {
   faites_quelque_chose_avec(data)
}, 'text');
 //  ^------dernier argument

Sinon, jQuery devinera ce qui a été renvoyé.


N'oubliez pas, $.get est juste une enveloppe pratique pour $.ajax. Les types de données sont répertoriés dans la documentation de $.ajax()...

dataType

Par défaut : Guess intelligent (xml, json, script, ou html)

Le type de données que vous attendez du serveur. Si aucun n'est spécifié, jQuery essaiera de l'inférer en fonction du type MIME de la réponse (un type MIME XML donnera du XML, en 1.4 JSON donnera un objet JavaScript, en 1.4 script exécutera le script, et tout autre chose sera renvoyée en tant que chaîne de caractères). Les types disponibles (et le résultat transmis en premier argument à votre rappel de succès) sont :

"xml": Renvoie un document XML pouvant être traité via jQuery.

"html": Renvoie du HTML en tant que texte brut ; les balises de script incluses sont évaluées lorsqu'elles sont insérées dans le DOM.

"script": Évalue la réponse en tant que JavaScript et la renvoie en tant que texte brut. Désactive la mise en cache en ajoutant un paramètre de chaîne de requête, "_=[TIMESTAMP]", à l'URL à moins que l'option de cache ne soit définie sur true. Remarque : Cela transformera les POST en GET pour les requêtes de domaine distant.

"json": Évalue la réponse en tant que JSON et renvoie un objet JavaScript. Dans jQuery 1.4, les données JSON sont analysées de manière stricte ; tout JSON malformé est rejeté et une erreur d'analyse est déclenchée. (Voir json.org pour plus d'informations sur la bonne mise en forme JSON.)

"jsonp": Charge un bloc JSON en utilisant JSONP. Ajoute un "?callback=?" supplémentaire à la fin de votre URL pour spécifier le rappel. Désactive la mise en cache en ajoutant un paramètre de chaîne de requête, "_=[TIMESTAMP]", à l'URL à moins que l'option de cache ne soit définie sur true.

"text": Une chaîne de texte brut.

valeurs multiples, séparées par des espaces : À partir de jQuery 1.5, jQuery peut convertir un dataType de ce qu'il a reçu dans l'en-tête Content-Type en ce que vous demandez. Par exemple, si vous voulez qu'une réponse texte soit traitée comme du XML, utilisez "text xml" pour le dataType. Vous pouvez également faire une demande JSONP, la recevoir en tant que texte, et l'interpréter par jQuery comme XML : "jsonp text xml." De même, une chaîne abrégée telle que "jsonp xml" tentera d'abord de convertir du jsonp en xml, et, en cas d'échec, convertira du jsonp au texte, puis du texte en xml.

1voto

Gavriel Points 3476

Essayez dataType "text" (ou "html", cela devrait fonctionner si vous n'avez pas de balises html "script" dedans)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X