Autor Zpráva
nethor
Profil
Zdravím,
potřebuji, aby mi funkce vracela obsah depozitu dotazem přes Ajax:
function GetDepozit(IdDepozit){
    var ContentDepozit ;
    $.get("Ajax.php" , {Depozit : IdDepozit} , function(Result){    
        ContentDepozit = Result    ;
    })    ;
    return    ContentDepozit    ;
}
Problém je patrně v přístupu k proměnné Result, nevím, jak ji dostat ven.
Tady jsem našel řešení podobného problému,
ale nevím, jak ho aplikovat na tento případ. (Funkce v parametru jiné funkce.)

Jak na to?
Dan Charousek
Profil
nethor:
Problém je v tom, že ajax je asynchronní. Vytvoří se HTTP požadavek (řádek 3), ale nečeká se na něj a rovnou se provádí řádek 6, jenže v tu chvíli, kdy vracíš proměnnou ContentDepozit v ní nic není. Funkci, která má zpracovat data z AJAXU musít volat uvnitř té anonymní funkce (řádek 4).
yFang
Profil
nethor:
Můžeš si z té funkce vracet promise a pak ten callback na to navěsit, kde potřebuješ.

function GetDepozit(IdDepozit) {
     return $.get("Ajax.php" , {Depozit : IdDepozit});
}

// ---

GetDepozit(1).done(function(Result) {
    console.log(Result);
});
nethor
Profil
Dan Charousek:
Díky za nakopnutí. Že může být problém v asynchonosti, mi nedošlo. .. a vysvětluje to dílčí úspěchy, když jsem script trasoval přes alert().

yFang:
Skvěle, tenhle postup v podstatě můj problém řeší. Děkuju.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: