我正在尝试保留尽可能多的OO,但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);工作,它提醒找到的名称,它是正确的...现在在将私有变量firstName设置为找到的内容后,我再次调用服务器...
这一次,它没有达到initializeStep3,我知道它不应该在服务器端失败,因为即使我替换了行
PeopleServices.getLastName(id, this.initializeStep3);
与
PeopleServices.getFirstName(id, this.initializeStep3);
它仍然不起作用。
我想知道在第一次服务器调用之后它是否丢失了对“this”的引用或类似于我无法按照我的方式调用initializeStep3的情况。有人有什么想法吗?
一些注意事项:
感谢您的帮助!
答案 0 :(得分:3)
你需要一个闭包
var that = this;
PeopleServices.getFirstName(id, function (x) {
that.initializeStep3(x);
}
);