2009-05-16 10 views
0

Ich versuche, so viel OO wie möglich zu halten, aber ASP.NET AJAX scheint etwas merkwürdig, nachdem sie von dem Server zu tun Rückkehr ...Problem mit OO-Programmierung in JavaScript und ASP.NET AJAX

function Person(personId) { 
var id = personId; 
var firstName; 
var lastName; 

this.initializeStep1 = function() { 
    PeopleServices.getFirstName(id, this.initializeStep2); 
} 

this.initializeStep2 = function(foundFirstName) { 
    alert(foundFirstName); 
    firstName = foundFirstName; 
    PeopleServices.getLastName(id, this.initializeStep3); 
} 

this.initializeStep3 = function(foundLastName) { 
    alert(foundLastName); 
    alert(firstName); 
    lastName= foundLastName; 
} 

this.initializeStep1(); 

}

Dies ist die Grundlage dafür. Also im Grunde ist es eine Person zu erstellen und ihren Vor- und Nachnamen vom Server abzurufen, um die Person zu initialisieren.

Wenn ich eine neue Person erstelle, geht sie durch initializeStep1, ruft den Server webmethod getFirstName auf und erreicht schließlich initializeStep2. die Warnung (foundFirstName); funktioniert, es warnt den Namen, der gefunden wurde und es ist korrekt ... jetzt nach dem Festlegen der privaten Variable FirstName, was gefunden wurde, mache ich einen zweiten Anruf an den Server ...

Diesmal erreicht es nicht initializeStep3, und ich weiß, es sollte nicht auf dem Server Ende versagt haben, denn selbst wenn ich die Linie

PeopleServices.getLastName(id, this.initializeStep3); 

mit

PeopleServices.getFirstName(id, this.initializeStep3); 

ersetzen es immer noch nicht funktioniert.

Ich habe mich gefragt, ob nach dem ersten Server-Aufruf verloren der Verweis auf "dies" oder etwas ähnliches zu dem passiert ist, wo ich initializeStep3 nicht so wie ich bin aufrufen kann. Hat jemand Ideen?

einige Anmerkungen:

  • Ich weiß, dass der Server webmethods arbeiten alle, ich sie einzeln getestet haben.
  • Ich bin mir nicht sicher, ob mein OO hier ist.
  • Ich bin mir nicht sicher, ob ich über AJAX richtig entweder gehe.

Vielen Dank für Ihre Hilfe!

+0

Ich hoffe, dass dies nur ein Beispiel ist, weil in der realen Welt, gäbe es keinen Grund, nur nicht eine ganze Person zurück. –

+0

Es ist. Was ich meine, kann nicht zu einem Objekt gemacht werden, um mehr Daten zurückzugeben, ohne dass es einen Sinn ergibt. –

Antwort

3

Sie benötigen einen Verschluss

var that = this; 
PeopleServices.getFirstName(id, function (x) { 
            that.initializeStep3(x); 
           } 
);