Diskuze: jQuery GET ve funkci vrací undefined
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 13 zpráv z 13.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, jaká funkce Ti vrací undefined? Jestli funkce subQuery, tak je to v pořádku, protože ta podle kódu nic nevrací.
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).
Jenže return máš v anonymní funkci, kterou volá jQuery. Ty potřebuješ mít return na konci funkce subQuery.
A jak prenesu proměnnou data na konec funkce subQuery? Zkoušel jsem všechno možné a NEJDE MI TO.
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;
}
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ží.
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.
Zobrazeno 13 zpráv z 13.