gpt4 book ai didi

javascript - 来自对象的内部 ajax 调用正在清除成员变量

转载 作者:行者123 更新时间:2023-11-30 17:51:14 27 4
gpt4 key购买 nike

我有对象

var MyObject = (function (){

var MyObject = function (a,b){
this.A = a;
this.B = b;
this.C;


}

MyObject.prototype.PublicFunction = function(){

var someVariable = 123; //this.A and this.B are both fine here.
var self = this;
$.ajax({
type: "POST",
url: "Default.aspx/PageMethod",
data: "{" + args + "}",
dataType: "json",
async: true,
cache: false,
contentType: "application/json; charset=utf-8",
success: function (data, status) {
//this.A = undefined, this.B = undefined, this.C = the data.
self.C = data.d
},
error: function(xhr, status, error){

alert('tears');



}
});
}


return MyObject;
}());

当我输入原型(prototype)函数时,this.A\B 都是来自构造函数的值。 ajax 调用执行后,this.A\B 都是undefined。我不确定在这里做什么。我可能不像我需要的那样理解对象的范围。谁能帮忙?

最佳答案

与您之前的问题类似,您的 Success 函数很可能在没有上下文的情况下执行(因此它在 this == window 的全局上下文中)

只需尝试在您的成功函数中记录 this (console.log(this)) - 您会看到它是 window 对象.

您遇到的问题的一个常见解决方法是创建对 this 的本地引用,如下所示:

 MyObject.prototype.PublicFunction = function(){
var self = this;
var someVariable = 123; //this.A and this.B are both fine here.
//AJAX HOOPLAH
Success(data) {
self.C = data.d

//this.A = undefined, this.B = undefined, this.C = the data.
}
Fail{
alert('tears');
}

}

关于javascript - 来自对象的内部 ajax 调用正在清除成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18988562/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com