Проблема с ОО-программированием в javascript и ASP.NET AJAX - PullRequest
0 голосов
/ 17 мая 2009

Я пытаюсь сохранить как можно больше ОО, но 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();

}

Это основа этого. Так что в основном это создание человека и получение его имени и фамилии с сервера для инициализации человека.

Когда я создаю нового человека, он проходит initializeStep1, вызывает веб-метод getFirstName и в конце концов достигает initializeStep2. предупреждение (foundFirstName); работает, он предупреждает об имени, которое было найдено, и это правильно ... теперь после установки частной переменной firstName на то, что было найдено, я делаю второй вызов на сервер ...

На этот раз он не достигает initializeStep3, и я знаю, что он не должен был произойти сбой на стороне сервера, потому что даже если я заменю строку

PeopleServices.getLastName(id, this.initializeStep3);

с

PeopleServices.getFirstName(id, this.initializeStep3);

все равно не работает.

Мне было интересно, потерял ли он ссылку на «this» после первого обращения к серверу или что-то похожее на то, где я не могу вызвать initializeStep3, как я. У кого-нибудь есть идеи?

некоторые заметки:

  • Я знаю, что все веб-методы сервера работают, я тестировал их индивидуально.
  • Я не уверен, что мой ОО здесь.
  • Я не уверен, что я тоже подхожу к AJAX.

Спасибо за вашу помощь!

1 Ответ

3 голосов
/ 17 мая 2009

Вам нужно закрытие

var that = this;
PeopleServices.getFirstName(id, function (x) { 
                                    that.initializeStep3(x);
                                } 
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...