¿Cómo cargo el contenido de un archivo de texto en una variable de JavaScript?
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?
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.
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
así es como lo hice en jquery:
jQuery.get('http://localhost/foo.txt', function(data) {
alert(data);
});
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>
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.