2009-05-16 6 views
0

나는 가능한 한 많은 OO을 유지하기 위해 노력하고 있지만, ASP.NET AJAX는 서버에서 돌아온 후 이상한 일을하고있는 것 같다 ... 자바 스크립트와 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을 거쳐 서버 webmethod getFirstName을 호출하고 결국 initializeStep2에 도달합니다. 경고 (foundFirstName); 작동합니다. 발견 된 이름을 알려주고 올바른 것입니다 ... 이제 private 변수 firstName을 찾은 것으로 설정 한 후 서버에 두 번째 호출을합니다 ...

이번에는 도달하지 않습니다. initializeStep3, 나는 내가 여전히 작동하지 않습니다

PeopleServices.getFirstName(id, this.initializeStep3); 

와 라인

PeopleServices.getLastName(id, this.initializeStep3); 

를 대체 할 경우에도 있기 때문에 서버 측에 실패하지 말았어야 알고있다.

첫 번째 서버 호출 후 "this"또는 이와 비슷한 방식으로 initializeStep3을 호출 할 수없는 곳에서 참조를 잃어 버렸는지 궁금합니다. 누구든지 아이디어가 있습니까?

몇 가지 참고 사항 :

  • 나는 개별적으로 테스트 한 서버 webMethods의 모든 노력 알고있다.
  • 내 OO가 여기에 있는지 확실하지 않습니다.
  • 나는 AJAX에 대해서도 잘하고 있는지 잘 모르겠다.

도움 주셔서 감사합니다.

+0

내가 현실 세계에서, 단지 전체 사람을 반환하지 할 이유가 없을 것입니다 때문에, 그냥 예입니다 희망이 필요합니다. –

+0

입니다. 내가 처리하고있는 것은 의미가 없어도 더 많은 데이터를 반환하는 객체로 만들 수 없습니다. –

답변

3

당신은 폐쇄

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