XMLHttpRequest uitlezen vanuit een object JavaScript

Pagina: 1
Acties:

  • Johnny
  • Registratie: December 2001
  • Laatst online: 10:09

Johnny

ondergewaardeerde internetguru

Topicstarter
Ik probeer met XMLHttpRequest (AJAX) wat data op te halen van een server, niks niuews, maar dit is de eerste keer dat ik het binnen een andere functie doe (die hier myObject) heet.

De alert('doet het') wordt 4 keer getoond, dus de functie receiveResult() wordt succesvol aangeroepen, maar hoe kan ik het XMLHttpRequest-object vanuit deze functie uitlezen.

Bij events verschuift de scope van het object waarde functie in staat naar het object dat het event triggerde, dus waarbij this eerst refereerde naar de instantie van myObject verwijst this binnen die functie dan naar bijvoorbeeld de afbeelding waar op wordt geklikt.

Met dit in het achterhood heb ik this.readyState, req.readyState, this.req.readyState geprobeerd, maar die werken allemaal niet.

Wanneer ik alert(this) doe in plaats van alert('doet het') laat hij broncode van de functie zien.

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function myObject() {
    
    //XMLHttpRequest-object
    this.req;

    this.doRequest = function() {
        //doe het request, werkt gewoon, niet belangrijk hier
    }

    //functie die wordt aangeroepen bij het ontvangen van de data
    this.receiveResult() = function() {

        alert('doet het');
        
        //werkt niet!!!
        if(this.req.readyState = 4) {
            alert('joepie');
        }
    }
}

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 21:14
Je kunt een closure gebruiken om de response in de scope van het object terug te krijgen:
JavaScript:
1
2
3
4
5
6
this.doRequest = function() {
    self=this;
    this.req.onreadyStateChange = function () { 
        self.receiveResult();
    }
}

Regeren is vooruitschuiven