Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS][AJAX][advAJAX] onSuccess i return
Forum PHP.pl > Forum > XML, AJAX
windman
Witam,
korzystam z biblioteki advAjax i napotkałem w niej na mały problem:

Problem dotyczy poniższej funkcji:
  1. function npCreateMenu(table,id){
  2. advAJAX.post({
  3. url: "php/menu.php",
  4.  
  5. parameters : {
  6. "table" : table,
  7. "id" : id
  8. },
  9.  
  10. onSuccess : function(obj) {
  11. var result = obj.responseText;
  12. document.getElementById('jakis_div').innerHTML = result;
  13. return 1;
  14. },//onSuccess : function(obj) {
  15.  
  16. onError : function(obj) {
  17. infoShow('AJAX Error: ' + obj.status);
  18. return 1;
  19. }//onError : function(obj) {
  20. });//advAJAX.post({
  21. }//npCreateMenu(table,id){


Dlaczego funkcja npCreateMenu nie zwraca 1?
np. echo npCreateMenu(x,y);

Dodam że jakis_div jest prawidłowo wypełniany, błędów brak.
nospor
Uzywaj bbcode!!!

Cytat
np. echo npCreateMenu(x,y);

To tak nie dziala. Zamiast return 1 daj se alert(1) to moze cos zobaczysz. A nastepnie poczytaj troche na jakiej zasadzie dziala ajax
windman
Cytat(nospor @ 12.01.2009, 11:36:26 ) *
To tak nie dziala. Zamiast return 1 daj se alert(1) to moze cos zobaczysz. A nastepnie poczytaj troche na jakiej zasadzie dziala ajax


Skoro to tak nie działa to co maożna zrobic aby funkcja zwróciła odpowiednią wartośc gdy Ajax zrobi już swoje?

Przybliże trochę problem:

mam funkcje: test

  1. test(){
  2. ajax1();
  3. ajax2();
  4. ajax3();
  5. }


która jak widac wywoluje 3 inne, które wykonują zapytania AJAX.
Problem w tym, że funkcja ajax2 nie może się uruchomic zanim funkcja (a scislej AJAX, który siedzi w niej) ajax1 nie zakończy działania. To samo dotyczy funkcji ajax2 i ajax3: ajax3 dopiero jak ajax2 zakonczy dzialanie.
Dodam jeszcze, że nie mogę wywołac funkcji ajax2 w onSuccess z funkcji ajax1. Obsługiwac to musi zewnętrzna funkcja.
marcio
Cytat
Problem w tym, że funkcja ajax2 nie może się uruchomic zanim funkcja (a scislej AJAX, który siedzi w niej) ajax1 nie zakończy działania. To samo dotyczy funkcji ajax2 i ajax3: ajax3 dopiero jak ajax2 zakonczy dzialanie.

Nie wiem jak to jest w advAjax ale w mintAjax w obiekcie Request jest takie cos jak grupowanie polaczen poszukaj moze w advAjax tez jest takie cos.
wookieb
Cytat
grupowanie polaczen

Jest. Ale żeby funkcja cos zwracała to ajax musi działac w sposob synchroniczny. Bodajze w advajax da sie to zrobic. Ale to oznacza ze zawiesisz javascript i dzialanie strony na czas ladowania danych przez ajax. Czy warto? Nie. Lepiej oprogramowac to tak ze wywolasz z funkcji onSuccess inna funkcje ktora ma robic cos dalej po zaladowaniu ajaxa albo poprostu wykonac to w onSuccess
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.