Anfängerfrage zum Setzen von Vars

RaRu

Mitglied
Hi Leute, ich bin ziemlich neu beim JS programmieren und habe nun lange rumprobiert ohne den Fehler zu finden.

Ich habe versucht eine JS Klasse zu schreiben, die bei onClick auf eine Tabellenzeile die Methode getXML() ruft. Diese Methode setzt zunächst ein paar ids der Tabellenzeile und schickt danach einen request los. Mit Firebug reindebuggt: die Variablen werden auch gesetzt, aber irgendwie nur temporär. Denn wenn die response vom request kommt sind die variablen wieder null. Hier ein paar Codesnippets:

Code:
function LOG_CLASS(url)
{
    this.url = url;             // das log objekt       (public)
    this.xmlDoc = null;          // die log xml
    this.trID = null;
    this.itemID = null;
    this.td1ID = null;
    this.td2ID = null;
    this.td3ID = null;

    this.getXML = function(trID,itemID,td1ID,td2ID,td3ID)
    {
        this.trID = trID;
        this.itemID = itemID;
        this.td1ID = td1ID;
        this.td2ID = td2ID;
        this.td3ID = td3ID;
        AJAX({'method':'POST','data':'args=getLogsAsXML','URL':'getLogRow.php','nocache':true,'callback':this.handleGetLogsAsXmlResponse}).request();
    }

    this.handleGetLogsAsXmlResponse=function(a,r,s){
                this.xmlDoc = a.xhr.responseXML;

                alert(this.itemID);
    }
}

Weiß jemand einen Rat? Ich hab nun keine Ahnung mehr was ich noch probieren soll. Die Ajax sachen funktionieren, ich wundere mich nur warum das setzen der Variablen bei der getXML() nicht klappt/nicht bleibt.
Achja - ein Objekt der Klasse wird auf die Weise
Code:
var logs = new LOG_CLASS("xml/log.xml");
erzeugt. Danach wird mit logs.getXML(....) darauf zugegriffen, aber auch das klappt ja - nur der Vollständigkeit halber.

Viele Grüße RaRu
 
Hi,

bitte unterlasse in Zukunft das Pushen deiner Threads. Ausser, dass du dir den Unmut der Moderatoren zuziehst, ändert sich ja am Status deines Problems nichts.

Vielleicht hilft es, wenn du die Referenz this "closurest" und damit weiterarbeitest.
Code:
function LOG_CLASS(url){
  var _this = this;
  // bisheriger Code

  this.getXML = function(trID,itemID,td1ID,td2ID,td3ID){
    // bisheriger Code
    AJAX({'method':'POST','data':'args=getLogsAsXML','URL':'getLogRow.php','nocache':true,'callback':_this.handleGetLogsAsXmlResponse}).request();
  }

  this.handleGetLogsAsXmlResponse=function(a,r,s){
    this.xmlDoc = a.xhr.responseXML;

    alert(this.itemID);
  }
}

Vielleicht hilft das ja weiter.

Ciao
Quaese
 

Neue Beiträge

Zurück