Autor | Zpráva | ||
---|---|---|---|
nintendo Profil * |
#1 · Zasláno: 9. 1. 2012, 21:29:36
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 |
#2 · Zasláno: 9. 1. 2012, 21:34:17
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 |
#3 · Zasláno: 9. 1. 2012, 21:37:33
nintendo:
Proč si myslíš, že tam je ta callback funkce a nevrací to obsah souboru přímo do proměnné? |
||
Leonidas Profil * |
#4 · Zasláno: 9. 1. 2012, 21:40:39
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 * |
#5 · Zasláno: 9. 1. 2012, 21:51:51
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 …
|
||
Časová prodleva: 12 let
|
0