AJAX - Objeto para facilitar la lectura de un archivo de texto

 
Vista:
Imágen de perfil de Gio
Val: 2
Ha disminuido 1 puesto en AJAX (en relación al último mes)
Gráfica de AJAX

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:

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;
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:
1
res = this.responseText;
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?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder