开发者

Variable scope with JQuery

开发者 https://www.devze.com 2022-12-13 00:59 出处:网络
I have a Javascript object which has a jquery ajax call to server to fill one of its attributes: function Busqueda(contenedor){

I have a Javascript object which has a jquery ajax call to server to fill one of its attributes:

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;
                }
            }
        });
    }
}

The ajax call should fill the attribute "resultados". However, after the "buscar" method is run, resultados remains undefined.

Also开发者_如何学Go, I debugged "that.resultados" inside the success method and it is Busqueda's attribute.

What is going on?


Why are you using that.resultados? do you mean "this"? It should just be "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;
                }
            }
        });
    }
}


You never show how you use it. Are you properly creating an instance?

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

If you don't use new then this (and that) and will be window, not o.

0

精彩评论

暂无评论...
验证码 换一张
取 消