Avatar
Michal Vašíček
Tým ITnetwork
Avatar
Michal Vašíček:

Ahoj, mám napsanou takovou funkci:

function subQuery(url) {
       $.get(url, function( data ) {
           alert(data);
           return(data);
       });
   }

K tomu mě dohnalo to, že to řeším už od včerejšího odpoledne. Alert je tam proto, abych zjistil, co vůbec v proměnné data je - a ano, je tam to, co chci. Jenomže funkce mi vrací undefined. Nevíte čím to je?
PS: Původně jsem to takhle řešit nechtěl, ale po tom, co jsem nad tím strávil tak 10 hodin jsem to jednoduše vzdal a včera v posteli mě zčistajasna napadlo tohle řešení.

Odpovědět 2.9.2015 7:01
Příspěvek může obsahovat stopy arašídů, sarkasmu a sóji.
Avatar
Odpovídá na Michal Vašíček
Petr Štechmüller:

Ahoj, jaká funkce Ti vrací undefined? Jestli funkce subQuery, tak je to v pořádku, protože ta podle kódu nic nevrací.

Nahoru Odpovědět  +1 2.9.2015 8:55
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Michal Vašíček
Tým ITnetwork
Avatar
Odpovídá na Petr Štechmüller
Michal Vašíček:

Není to v pořádku. Má vracet proměnnou data, protože mi to vyhodí alert (a jakmile to vyhodí alert, znamená to, ze jsem stránku načetl a return se provede).

Nahoru Odpovědět 2.9.2015 9:07
Příspěvek může obsahovat stopy arašídů, sarkasmu a sóji.
Avatar
kxmx
Redaktor
Avatar
kxmx:

ten return máš v callbacku

 
Nahoru Odpovědět  +1 2.9.2015 9:10
Avatar
Odpovídá na Michal Vašíček
Petr Štechmüller:

Jenže return máš v anonymní funkci, kterou volá jQuery. Ty potřebuješ mít return na konci funkce subQuery.

Nahoru Odpovědět  +1 2.9.2015 9:20
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Michal Vašíček
Tým ITnetwork
Avatar
Odpovídá na Petr Štechmüller
Michal Vašíček:

A jak prenesu proměnnou data na konec funkce subQuery? Zkoušel jsem všechno možné a NEJDE MI TO.

Nahoru Odpovědět 2.9.2015 9:24
Příspěvek může obsahovat stopy arašídů, sarkasmu a sóji.
Avatar
Odpovídá na Michal Vašíček
Petr Štechmüller:

Takhle by to mělo fungovat:

function subQuery(url) {
       // vytvoříš pomocnou proměnnou
       var pom;
       $.get(url, function( data ) {
           alert(data);
           //return(data);
           // Do pomocné proměnné přiřadíš tvoje data
           pom = data;
       });
      // Nakonec tu pomocnou proměnnou vrátíš
      return pom;
   }
Nahoru Odpovědět  -2 2.9.2015 9:30
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Michal Vašíček
Tým ITnetwork
Avatar
Odpovídá na Petr Štechmüller
Michal Vašíček:

O přestávce vyzkousim a dam vědět, zatím díky. :)

Nahoru Odpovědět 2.9.2015 9:33
Příspěvek může obsahovat stopy arašídů, sarkasmu a sóji.
Avatar
Michal Vašíček
Tým ITnetwork
Avatar
Nahoru Odpovědět 2.9.2015 14:07
Příspěvek může obsahovat stopy arašídů, sarkasmu a sóji.
Avatar
vosa53
Člen
Avatar
Odpovídá na Michal Vašíček
vosa53:

To co chceš ti fungovat nemůže, chvíli trvá než ty data příjdou. I kdyby jsi to dělal podle Petr Štechmüller tak to taky fungovat nebude, pač se proměnná vrátí dřív než se do ní něco uloží.

 
Nahoru Odpovědět 2.9.2015 14:56
Avatar
kxmx
Redaktor
Avatar
kxmx:

Mrkni jak se ten get volá synchroně. Metoda ajax má parametr async: false

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 2.9.2015 15:15
Avatar
Michal Vašíček
Tým ITnetwork
Avatar
Odpovídá na kxmx
Michal Vašíček:

Díky moc, it's working! ^^

Nahoru Odpovědět 2.9.2015 15:32
Příspěvek může obsahovat stopy arašídů, sarkasmu a sóji.
Avatar
vosa53
Člen
Avatar
vosa53:

Synchroní requesty v hlavním vlákně jsou prý deprecated. Ve chromu je to napsáno jako varování:

Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/

a na té stránce na kterou se odkazuje je tohle:

Synchronous XMLHttpRequest outside of workers is in the process of being removed from the web platform as it has detrimental effects to the end user's experience. (This is a long process that takes many years.) Developers must not pass false for the async argument when the JavaScript global environment is a document environment. User agents are strongly encouraged to warn about such usage in developer tools and may experiment with throwing an InvalidAccessError exception when it occurs.

http://stackoverflow.com/…ted-what-now

 
Nahoru Odpovědět  +1 2.9.2015 15:39
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.