使用JQuery的可变范围

时间:2009-12-04 01:17:33

标签: javascript jquery

我有一个Javascript对象,它对服务器进行jquery ajax调用以填充其中一个属性:

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的属性。

发生了什么事?

2 个答案:

答案 0 :(得分:1)

你为什么要使用那个.resultados?你的意思是“这个”?它应该只是“resultados”

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 {
                    resultados = data.resultados;
                }
            }
        });
    }
}

答案 1 :(得分:0)

你永远不会展示你如何使用它。你正确地创建了一个实例吗?

var o = new Busqueda();
// ... after the ajax success
console.log(o.resultados)

如果您不使用new,那么this(和that)将是window,而不是o