¿Cómo cargo el contenido de un archivo de texto en una variable de JavaScript?

Resuelto danb asked hace 16 años • 9 respuestas

Tengo un archivo de texto en la raíz de mi aplicación web http://localhost/foo.txt y me gustaría cargarlo en una variable en javascript... en groovy haría esto:

def fileContents = 'http://localhost/foo.txt'.toURL().text;
println fileContents;

¿Cómo puedo obtener un resultado similar en javascript?

danb avatar Oct 13 '08 08:10 danb
Aceptado

XMLHttpRequest, es decir, AJAX, sin XML.

La forma precisa en que haga esto depende del marco de JavaScript que esté utilizando, pero si ignoramos los problemas de interoperabilidad, su código se verá así:

var client = new XMLHttpRequest();
client.open('GET', '/foo.txt');
client.onreadystatechange = function() {
  alert(client.responseText);
}
client.send();

Sin embargo, normalmente hablando, XMLHttpRequest no está disponible en todas las plataformas, por lo que se hacen algunas manipulaciones. Una vez más, lo mejor que puedes hacer es utilizar un marco AJAX como jQuery.

Una consideración adicional: esto sólo funcionará mientras foo.txt esté en el mismo dominio. Si está en un dominio diferente, las políticas de seguridad del mismo origen le impedirán leer el resultado.

Edward Z. Yang avatar Oct 13 '2008 02:10 Edward Z. Yang

Actualización 2019: uso de Fetch:

fetch('http://localhost/foo.txt')
  .then(response => response.text())
  .then((data) => {
    console.log(data)
  })

https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API

Vic avatar Apr 05 '2018 19:04 Vic

así es como lo hice en jquery:

jQuery.get('http://localhost/foo.txt', function(data) {
    alert(data);
});
danb avatar Oct 13 '2008 02:10 danb

Si solo desea una cadena constante del archivo de texto, puede incluirla como JavaScript:

// This becomes the content of your foo.txt file
let text = `
My test text goes here!
`;
<script src="foo.txt"></script>
<script>
  console.log(text);
</script>
Expandir fragmento

La cadena cargada desde el archivo se vuelve accesible para JavaScript después de cargarse. El carácter `(comilla invertida) comienza y termina un literal de plantilla , lo que permite los caracteres " y ' en su bloque de texto.

Este enfoque funciona bien cuando intentas cargar un archivo localmente, ya que Chrome no permitirá AJAX en las URL con el file://esquema.

Erik Uggeldahl avatar Aug 17 '2016 22:08 Erik Uggeldahl