Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [js/ajax] przekazanie wartości przez callback
wujek_bogdan
post
Post #1





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 8.03.2008

Ostrzeżenie: (0%)
-----


Skrypt PHP pobiera dane na temat ilości katalogów w podanym katalogu (robi też inne rzeczy, ale to akurat nieistotne), następnie ajaxem pobieram wartość i tworzę na podstawie tych danych różne własności obiektu Gallery. W tym wypadku chodzi o zliczenie elementów galerii:

  1. <script type="text/javascript">
  2.  
  3. $(document).ready(function() {
  4.  
  5.  
  6. var Gallery = {
  7. name: 'default',
  8. items: 0,
  9. desc: 'default'
  10. };
  11.  
  12. $.post('search_dir.php', {
  13. 'directory': 'galeria',
  14. 'type': 'directory'
  15. }, function (data){ // data zawiera ilosc elementow, w tym momencie data = 4
  16. GallerySetItems(data); // przekazujemy data = 4 do funkcji GallerySetItems()
  17. });
  18.  
  19. function GallerySetItems(items) {
  20. alert(items); // wyswietla sie prawidlowo przekazana wartosc 4
  21. Gallery.items = items; // ustawia Gallery.items na 4
  22. }
  23.  
  24. $('#data').text(Gallery.items); // Wysciwetla Gallery.items. spodziewana wartosc to 4. Wyswietla sie 0. WHY !!(IMG:style_emoticons/default/questionmark.gif)
  25.  
  26. // ponizej dla testu, gdy wywoluje recznie funkcje GallerySetItems() to wszystko gra.
  27.  
  28. GallerySetItems('1000'); // ustawia items na 1000
  29. $('#data1').text(Gallery.items); // wyswietla 1000
  30.  
  31. });
  32.  


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ść (IMG:style_emoticons/default/winksmiley.jpg)

Ten post edytował wujek_bogdan 2.11.2010, 23:39:52
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 06:10