Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [advAjax] Grupowe wywołania i kolejność ich wywoływania
Forum PHP.pl > Forum > XML, AJAX
coldpeer
Witam,

Używam advAjaksa i korzystam z grupowych wywołań, tj. coś takiego jak:

  1. <?php
  2. advAJAX.setDefaultParameters({
  3.    group : "sample_group",
  4.    onGroupLeave : function() { alert("Everything loaded..."); },
  5.    onSuccess : function(obj) { alert(obj.responseText); },
  6.    onError : function(obj) { alert("Error: " + obj.status); }
  7. });
  8.  
  9.  
  10. for(= 0; i < 50; i++)
  11.   advAJAX.get({ url: "http://www.example.com/page"+});
  12.  
  13. advAJAX.setDefaultParameters({});
  14. ?>


Problem w tym, że przy większej ilości psuje mi się kolejność odbieranych danych - pewnie dlatego, że odpowiedzi z serwera mogą przychodzić w różnej kolejności. Wrzuciłem sobie do tej pęteli sleepa na 1 sekundę i niby działa, jednak jest mankament - dane wyświetlane są dopiero po załadowaniu wszystkich wywołań (czyli po 50 sek), a nie na bieżąco, tzn. w powyższym przypadku ze sleepem dostaję jeden alert od pierwszego wywołania, a bez sleepa dostaję 50 alertów ze wszystkich wywołań, ale niepokolei - np. 0, 1, 2, 5, 6, 9, 10, 3, 4, ... a chcę 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ...

Ktoś ma jakiś pomysł?

Dzięki za odpowiedzi.
Kihol
W onSuccess wywoływać kolejne zapytania AJAXowe. Wtedy masz pewność, że wykonasz je dopiero po odebraniu odpowiedzi z poprzedniego.
Czyli np utworzyć funkcję :

  1. <?php
  2. function onsuccess(id) {
  3. advAJAX.get({ url: "http://www.example.com/page"+id });
  4. }
  5. ?>

wtedy w kodzie inkrementujesz gdzieś id, po ukończeniu zapytania najlepiej.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.