Objeto para facilitar la lectura de un archivo de texto
Publicado por Gio (1 intervención) el 03/04/2021 20:29:38
Intento crear un objeto (class) para facilitar algunas funciones de Ajax. Este es el código que llevo de momento:
Quiero que al ejecutar archivo.leer (línea 33) este lea el contenido de texto.html especificado en la variable archivo (línea 32) y lo devuelva (haga return). El problema está en la linea 20, la palabra reservada this hace referencia al objeto this.ajax así que cuando hago this.res no se hace referencia a la variable res, mas bien se hace referencia al objeto res que se encuentra en this.ajax (el cual no existe).
Intenté hacer lo siguiente en la linea 20:
Pero sigue devolviendo un valor undefined
Se me ocurrió que podía crear una variable fuera de la declaración del objeto Archivo llamada res y en la linea 20 colocar lo siguiente:
Y esto si funciona, la variable global res si almacena lo leído en el archivo especificado (en este caso es texto.html), pero no quiero trabajar fuera del objeto Archivo.
Como puedo hacer?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<script>
class Archivo{
constructor(archivo, metodo="GET", asincrona=true){
this.archivo=archivo;
this.metodo=metodo;
this.asincrona=asincrona;
if(window.XMLHttpRequest){
this.ajax = new XMLHttpRequest();
} else {
this.ajax = new ActiveXObject("Microsoft.XMLHTTP");
}
this.res;
}
get leer(){
this.ajax.onreadystatechange = function(){
if(this.readyState == 4 && this.status == 200){
this.res = this.responseText;
}
}
this.ajax.open(this.metodo, this.archivo, this.asincrona);
this.ajax.send();
return this.res;
}
}
var archivo = new Archivo("texto.html");
console.log(archivo.leer);
</script>
Quiero que al ejecutar archivo.leer (línea 33) este lea el contenido de texto.html especificado en la variable archivo (línea 32) y lo devuelva (haga return). El problema está en la linea 20, la palabra reservada this hace referencia al objeto this.ajax así que cuando hago this.res no se hace referencia a la variable res, mas bien se hace referencia al objeto res que se encuentra en this.ajax (el cual no existe).
Intenté hacer lo siguiente en la linea 20:
1
Archivo.res = this.responseText;
Se me ocurrió que podía crear una variable fuera de la declaración del objeto Archivo llamada res y en la linea 20 colocar lo siguiente:
1
res = this.responseText;
Como puedo hacer?
Valora esta pregunta
0