<script type="text/javascript"> $(document).ready(function() { var Gallery = { name: 'default', items: 0, desc: 'default' }; $.post('search_dir.php', { 'directory': 'galeria', 'type': 'directory' }, function (data){ // data zawiera ilosc elementow, w tym momencie data = 4 GallerySetItems(data); // przekazujemy data = 4 do funkcji GallerySetItems() }); function GallerySetItems(items) { alert(items); // wyswietla sie prawidlowo przekazana wartosc 4 Gallery.items = items; // ustawia Gallery.items na 4 } $('#data').text(Gallery.items); // Wysciwetla Gallery.items. spodziewana wartosc to 4. Wyswietla sie 0. WHY !! // ponizej dla testu, gdy wywoluje recznie funkcje GallerySetItems() to wszystko gra. GallerySetItems('1000'); // ustawia items na 1000 $('#data1').text(Gallery.items); // wyswietla 1000 }); </script>
w #data wyświetla się wartość 0, zamiast spodziewanej wartości 4. nie jest to problem z asynchronicznym pobieraniem danych, ponieważ alert() wywołany testowo przed Gallery.items wyświetla wartość prawidłową, czyli 4.
Poniżej dla testu wywołuję funkcję GallerySetItems('1000'); i wartość Gallery.items jest prawidłowo ustawiana i wyświetlana.
//EDIT:
Temat do zamknięcia.
Kod
$('#data').text(Gallery.items);
wykonuje się zanim wykona się ajaxowy post, więc wartość jest 0. gdy wrzucę wykonanie tego kodu w setInterval, to po kilku milisekundach pojawia się prawidłowa, spodziewana wartość
