Autor Zpráva
nintendo
Profil *
Ahoj, mam problem s navratovou hodnotou fce, uvnitr fce,dejme tomu fce testovaci volam jinou fci, ktera mi ma vratit string, bohuzel at delam co delam, volani mi nic nevrati.

Nize uvedeny priklad vraci undefined, jak to prosim vyresit? Co mohu delat spatne, nekolikrat jsem na to koukal a chybu nevidim>
function testovaci(nameOfTheme) {
    jQuery.ajax({
        url : "api/users/editMyTheme",
        type : "GET",
        data : {
            id : userId,
            theme : nameOfTheme
        },
        success : function(result) {

                 var melaByVratitHodnotu = translateIt('en',objectResult.content);
}

 }



 function translateIt(translateTo,textToTranslate)
{

    
     jQuery.ajax({
        url : "api/users/translate",
        type : "GET",
        data : {
            text : textToTranslate,
            translateto : translateTo
        },
        success : function(result) {
            //console.log('PARAMS TO TRANSLATE SENT');
            //console.log(result);
            objectResult = jQuery.parseJSON(result);
            //console.log(objectResult.status);

             //console.log('STATUS JE ' + objectResult.status);

             if (objectResult.status == "false") {

                 console.log("PREKLAD SE NAZDARIL");

                 $("#infoMessMyThemes").show();
                $("#infoMessMyThemes h1").text(
                        text['text_se_nepodarilo_prelozit']);

             }

             if (objectResult.status == "success") {
             //console.log('PRELOZENY TEXT: ' + objectResult.translatedText);
            
            
                 return objectResult.translatedText;
        
             }
            
         },
        // IF HTTP RESULT 400 || 404
        error : function(x, e) {

             if (x.status == 0) {
                console.log('You are offline!!\n Please Check Your Network.');
            } else if (x.status == 404) {
                console.log('Requested URL not found.');
            } else if (x.status == 500) {
                console.log('Internel Server Error');
            } else if (e == 'parsererror') {
                console.log('Error.\nParsing JSON Request failed.');
            } else if (e == 'timeout') {
                console.log('Request Time out.');
            } else {
                console.log('Unknow Error.\n' + x.responseText);
            }

         }
    });
    
    
 }
Chamurappi
Profil
Reaguji na nintenda:
Co mohu delat spatne
Zapomněl jsi, co znamená první áčko ve zkratce AJAX. Komunikace je asynchronní, nemůžeš během běhu téže funkce vyslat požadavek a zároveň přijmout odpověď.
Radek9
Profil
nintendo:
Proč si myslíš, že tam je ta callback funkce a nevrací to obsah souboru přímo do proměnné?
Leonidas
Profil *
nikde nemas return, ale ani ten by ti nepomohol pretoze, metodu jQuery.ajax volas asynchronne to znamena ze kym sa ti zo serveru vrati výsledok a zavola sa fcia success samotna fcia testovaci sa uz skonci, a spravne vrati undefuned. s vysledkom asynchronnej operacie by si mal pracovat v metode success.
nintendo
Profil *
Diky moc, nedoslo mi to , co s tim mohu ale delat pokud nechci mit duplicitni kod na dvou mistech?

Napada me jedine si parametry pro volanou fci ulozit bokem a zavolat ji mimo jQuery.ajax, nebo mam i jine (lepsi) moznosti?
Chamurappi
Profil
Reaguji na nintenda:
Používat normálně callbacky. Pokud máš funkci zpracovávající návratovou hodnotu, zavolej ji z callbacku success

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: