Problem bei .this Methodenaufruf in einer Klasse

X-Color

Erfahrenes Mitglied
Hallo,
ich besitze eine Klasse die für AJAX zuständig ist. Allerdings habe ich darin ein problem, das ich nur mit einem Workaround lösen konnte...ich wende mich daher an euch und vlt. könnt ihr mir dabei helfen das ordentlich umzusetzen.

Kurze Beschreibung:
die Methode this.sendRequest() führt am Schluss die Funktion (via oneadystatechange) getResponse() aus.
Mein Problem ist nun das ich getResponse() nicht als .this Methode aufrufen kann, sondern nur als normale Funktion die aber keinen Zugriff mehr auf meine in der Klasse definierten Attribute (Variablen) hat.
PHP:
this.sendRequest = function() {
	...
	this.request.onreadystatechange =  function(){ getResponse(); }
}

function getResponse() {
    ...
}

Auch würde ich gerne die Methode getResponse() im Controller ausführen, was sich aber wegen this.request.onreadystatechange als wohl eher unmöglich erweist oder?

Könnt ihr mir dabei helfen das zu verbessern?

Gruß Gerrit
 
Zuletzt bearbeitet:
Das liegt daran das du eigentlich in einen anderen Object/Klasse bist. Der Callback onReadyStateChange gehört zum HttpXmlRequest Object und dieses Object kennt deine Methoden und Variablen nicht.
Somit befindest Dich nicht mehr in deiner eigentlichen klasse sondern in der Klasse HttpXMLRequest. Umgehen kannst das ganze Dilemma in dem Du am Anfang der Klasse die Klasse selber in einer Klassen Variable speicherst.

Code:
function foobar () {
   // würde nun die Klasse foobar in der internen variable thisObj speichern
   var thisObj = this; 
   ...
  this.sendRequest = function() {
    ...
    this.request.onreadystatechange =  function(){ thisObj.getResponse(); }
 }
  
  this.getResponse = function () {
      ...
  }
}

Das gleiche Problem wirst auch bei Eventhandlern bekommen oder anderen Callback Methoden.

Um es besser zu verdeutlichen , gib mal in der Methode onreadystatechange ein

Code:
for(key in this)  alert(key+"   "+this[key]);

MfG
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück