Toon posts:

[ajax] probleem in IE met callbackfunctie

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil proberen een httpRequestObject meermalen te gebruiken. Ik heb een RequestObjectWrapper-object gemaakt, dat zorgt voor het aanmaken van het requestObject en het verwerken van de requests. Voor het doen van requests gebruik ik de functie makeRequest (zie hieronder). Die werkt de eerste keer prima, maar wanneer ik in IE de functie een tweede keer aanroep, wordt de callback functie van onreadystatechange niet meer uitgevoerd. In Firefox gaat het gewoon goed. Kan iemand mij uitleggen wat ik verkeerd doe?

Hieronder staat alleen de makeRequest functie; de volledige code staat hier.
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
RequestObjectWrapper.prototype.makeRequest = function(url) {
    if (this.rObj.readyState == 0 || this.rObj.readyState == 4) {//check if rObj is ready to make a new request
        var _this = this;//create reference to this wrapper
        this.rObj.onreadystatechange = function() {
            //triggers this wrapper's parent-element's processReqData method upon succes
            //anonymous function gebruiken om variabelen (_this) uit de scope van makeRequest te kunnen gebruiken
            if (_this.rObj.readyState == 4) {
                if (_this.rObj.status == 200) {
                    try {
                        _this.parentObj.processReqData(_this.rObj);
                    } catch (error) {
                    }
                }
            }
        }
        this.rObj.open("GET", url, true);
        this.rObj.send(null);
    }
}

[ Voor 5% gewijzigd door Verwijderd op 18-04-2007 17:47 . Reden: url naar volledige code toegevoegd ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Definieer je onreadystatechange handler na de open()
Verder moet je ook nog iets doen om te zorgen dat IE de respons niet cached ;)

Intentionally left blank


Verwijderd

Topicstarter
ja, dat lost het probeleem op. Dankjewel, daar was ik zelf niet achter gekomen. Nu ik weet waar ik naar moet zoeken vind ik ook wat meer uitleg hier