mrjerk: AJAX

Beitrag lesen

Hallo,
Entscheidend für die Beantwortung Deiner Frage ist diese Zeile:

  
this.xmlHTTPObj.onreadystatechange = this.ProcessRequest;  

Du weist setzt damit (abstrakt gesprochen) die Eigenschaft "onreadystatechange" von "this.xmlHTTPObj" auf ein anderes Funktionsobjekt.
Somit ändert sich der Scope: "this" bezieht sich nun nicht mehr auf die Instanz deiner AJAX-Klasse sondern auf das xmlHTTPObj dieser Instanz, und diese kennt natürlich keine Eigenschaft "xmlHTTPObj" mehr.

Du kannst das Problem so lösen wie Du es tust (über eine globale Variable) oder z.b. über Closures
lösen.

Etwas wie

  
var scope = this;  
this.xmlHTTPObj.onreadystatechange = function() {scope.ProcessRequest};  

müsste z.b. gehen (ohne Gewähr).

Oder Du klebst den Scope an das xnmlHHTObj dran:

  
this.xmlHTTPObj.scope = this;  
this.xmlHTTPObj.onreadystatechange = this.ProcessRequest;  

Dann müsstest Du in deiner "ProcessRequest"-Methode überall dort, wo jetzt "this" steht, "this.scope" schreiben.

Hope that helps.

Viele Grüße,
Jörg