0

Returning data generated by jquery ajax done function to a variable. When I use it this way, I get output as undefined on the console. How can I return the data in the .done function?

class Ajax_r {

    constructor() {

    }

    yukle(veriler) {

        let Confirm_sinifi = new Confirm();
        let Json_sinifi = new Json(veriler);
        
        this.url = Json_sinifi.json_degisken("url", null);
        this.form = Json_sinifi.json_degisken("form",null);
        this.form_katman = Json_sinifi.json_degisken("form_katman",null);
        this.button_text = Json_sinifi.json_degisken("button_text",null);
        this.button_text_load = Json_sinifi.json_degisken("button_text_load",null);
        this.parametreler = Json_sinifi.json_degisken("parametreler",null);
        
        $.post( this.url, this.parametreler)
        .done(function( data ){

            let Json_sinifi = new Json(data);
            
            if(Json_sinifi.is_json()){

                var yanit = Json_sinifi.json_degisken("yanit",null)

                if(yanit == 0) {
                    
                    var aciklama = Json_sinifi.json_degisken("aciklama",null);
                    
                    returnFunction( data );
                    
                } else {
                    console.log(data);
                    Confirm_sinifi.info({
                        ust_uyari :"Merhaba",
                        aciklama:"İşlem sırasınıda bir hata meydana geldi. Lütfen tarayıcınızın console.log bölümünü inceleyiniz.",
                        buton_mesaji:"Tamam"
                    });
                }
                
            } else {
                // gelen veri Json değil
                console.log(data);
                Confirm_sinifi.info({
                    ust_uyari :"Merhaba",
                    aciklama:"Gelen veri json değil. Lütfen tarayıcınızın console.log bölümünü inceleyiniz.",
                    buton_mesaji:"Tamam"
                });
            }
        })
        .fail(function(){
            // ajax isteği sırasında bir hata meydana geldi.
            Confirm_sinifi.info({
                ust_uyari :"Merhaba",
                aciklama:"Oops! Üzgünüm bir hata oluştu. Ajax isteği yapılamadı. Lütfen site yönetimi ile iletişime geçin.",
                buton_mesaji:"Tamam"
            });
        });
        
        function returnFunction(data) {
            return data;
        }
        
    }

}

I want to use the incoming data as follows

let Ajax_sinifi = new Ajax_r();

var ajax_cevap = Ajax_sinifi.yukle({
    url: "_ajax_admin.php",
    parametreler: {islem: "kategori_filtre_secenegi_sil", veri_id: 5}
});
                                
console.log(ajax_cevap);

Returning data generated by jquery ajax done function to a variable. When I use it this way, I get output as undefined on the console. How can I return the data in the .done function?

  • Does this answer your question? [How do I return the response from an asynchronous call?](https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – pilchard Oct 31 '20 at 21:27

1 Answers1

0

I solved the problem as follows

class Ajax_r {

    constructor() {

    }

    yukle(veriler) {

        let Confirm_sinifi = new Confirm();
        let Json_sinifi = new Json(veriler);
        
        this.url = Json_sinifi.json_degisken("url", null);
        this.form = Json_sinifi.json_degisken("form",null);
        this.form_katman = Json_sinifi.json_degisken("form_katman",null);
        this.button_text = Json_sinifi.json_degisken("button_text",null);
        this.button_text_load = Json_sinifi.json_degisken("button_text_load",null);
        this.parametreler = Json_sinifi.json_degisken("parametreler",null);
        this.tur = Json_sinifi.json_degisken("tur","form");
        this.function_blok = Json_sinifi.json_degisken("function_blok",null);
        
        var function_blok = this.function_blok;
        
        
        $.post( this.url, this.parametreler)
        .done(function( data ){

            let Json_sinifi = new Json(data, "ajax");
            
            if(Json_sinifi.is_json()){

                var yanit = Json_sinifi.json_degisken("yanit",null)

                if(yanit == 0) {
                
                    function_blok(data);
                    
                } else {
                    console.log(data);
                    Confirm_sinifi.info({
                        ust_uyari :"Merhaba",
                        aciklama:"İşlem sırasınıda bir hata meydana geldi. Lütfen tarayıcınızın console.log bölümünü inceleyiniz.",
                        buton_mesaji:"Tamam"
                    });
                }
            }
        })
    }

}

I added an external function parameter while defining the class.

Ajax_sinifi.yukle({
    url: "_ajax_admin.php",
    form: "form#sil_form",
    form_katman: "div.form_kapsayici_2",
    button_text: "Filtreyi Sil",
    button_text_load: "Filtre Siliniyor...",
    parametreler: {islem: "kategori_filtre_secenegi_sil", veri_id: 5},
    function_blok: function (data) {
        returnFunction(data);
    }
});
                                
function returnFunction(data){
    console.log("return data: " + data);
}

I will use this method for now to return asynchronous search requests. I am waiting for your comments with a better idea