Javascript 带JQuery的变量范围
我有一个Javascript对象,它有一个对服务器的jquery ajax调用来填充它的一个属性:Javascript 带JQuery的变量范围,javascript,jquery,Javascript,Jquery,我有一个Javascript对象,它有一个对服务器的jquery ajax调用来填充它的一个属性: function Busqueda(contenedor){ var datosPost = "someData"; var resultados = undefined; var that = this; this.buscar = function(){ jQuery.ajax({ type: "POST",
function Busqueda(contenedor){
var datosPost = "someData";
var resultados = undefined;
var that = this;
this.buscar = function(){
jQuery.ajax({
type: "POST",
dataType: "json",
url: "phpFile.php",
data: datosPost,
success: function (data){
if(data.error != 0){
alert(data.errorTxt);
} else {
that.resultados = data.resultados;
}
}
});
}
}
ajax调用应该填充属性“resultados”。但是,在运行“buscar”方法之后,resultados仍然没有定义
另外,我在success方法中调试了“that.resultados”,这是Busqueda的属性
发生了什么事?你为什么要使用这个.resultados?你是说“这个”吗?应该是“resultados”
你从不展示你是如何使用它的。您是否正确地创建了一个实例
var o = new Busqueda();
// ... after the ajax success
console.log(o.resultados)
如果您不使用
new
,那么this
(和that
)将是窗口,而不是o
,因为success()是一个回调,他需要使用'that',因为'this'将绑定到窗口而不是Busqueda。resultados
不是Busqueda
实例的成员。它是一个私有变量,通过简单赋值而不是任何this/that取消引用来访问。在没有this/that的情况下尝试过,但不起作用。我的代码基于本文:var-busqueda=new-busqueda($('busquedaPersona');busqueda.buscar();
var o = new Busqueda();
// ... after the ajax success
console.log(o.resultados)