Proměnná z getJSON do jiné funkce a makro link
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- lukendo
- Člen | 96
Zdravím, načítám si přes payload data, což se mi vpohodě načte, ale když s tím chci později pracovat, tak je už ta proměnná null a nemám tušení proč. Dále pak když použiji :
$.getJSON({link findProducts!}, {'id': $(this).val()}, function(payload) {
tak se mi to vygeneruje jako:
$.getJSON("\/eval\/www\/validations\/add?do=findProducts", {'id': $(this).val()}, function(payload) {
$('#product_name').keyup(function() {
if($(this).val().length >= 3)
{
var content = null;
$.getJSON('http://localhost/eval/www/validations/add/' + $(this).val() + '?do=findProducts', function(payload) {
content = payload.products;
console.log(content);
});
$('.ui.search').search({
source: content
});
console.log(content); // tady už je content null
}
});
Asi půjde o úplně začátečnické chyby, ale nemůžu se dopracovat k řešení. Díky
Editoval lukendo (24. 2. 2017 17:22)
- David Matějka
- Moderator | 6445
to volani je asynchronni – proto je tam ten callback, kde mas volat
to $('.ui.search').search({...
- Mysteria
- Člen | 797
Jde o to, že ten další JS kód nečeká, až se vykoná požadavek na JSON, který je logicky pomalejší, takže to přesuň prostě dovnitř:
var content = null;
$.getJSON('http://localhost/eval/www/validations/add/' + $(this).val() + '?do=findProducts', function(payload) {
content = payload.products;
console.log(content);
$('.ui.search').search({
source: content
});
console.log(content);
});