Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem ze zwracaną wartością przez funkcję ajaxa
Forum PHP.pl > Forum > XML, AJAX > AJAX
Matiash
Witam, mam taka funkcję js. Wszystko działa dobrze, jednak chciałbym jeśli odpowiedź zwórcona przez serwer (this.respone) != failed, to żeby cała funkcja MoveR zwracała true a w przeciwnym wypadku false. Przy takim kodzie jak poniżej zwraca undefined.

Kod
  function MoveR(name, name_min, name2, name2_min) {      
          var xmlhttp = new ajax("ajax/moveright/");
          xmlhttp.method = "GET";
          xmlhttp.onCompletion = function(){
            if (this.response != \'failed\') {
                return true;
            } else { return false; }
          };          
          xmlhttp.runAJAX("photoname=" + escape(name) + "&photoname_min=" + escape(name_min) + "&photoname2=" + escape(name2) + "&photoname2_min=" + escape(name2_min));
  }
flashdev
Funkcja MoveR zakończy swoje działanie zanim jeszcze wynik odpowiedzi będzie znany. Dzieje się tak dlatego, że ajax działą asynchronicznie. Nie możesz uzależnić wyniku zwracanego przez tą funkcję od wyniku odpowiedzi serwera. Możesz za to przekazać tej funkcji uchwyt do funkcji którą ona ma wykonać gdy odpowiedź będzie znana.
Matiash
Cytat(flashdev @ 18.10.2010, 01:08:14 ) *
Możesz za to przekazać tej funkcji uchwyt do funkcji którą ona ma wykonać gdy odpowiedź będzie znana.


czyli rozumiem, że w funkcji onCompletion mam wykonać to co chcę wykonać w innej funkcji w zależności od this.response ? Nie wiem czy dobrze zrozumiałem smile.gif
flashdev
Cytat(Matiash @ 18.10.2010, 10:34:07 ) *
czyli rozumiem, że w funkcji onCompletion mam wykonać to co chcę wykonać w innej funkcji w zależności od this.response ? Nie wiem czy dobrze zrozumiałem smile.gif


Kod
function MoveR(uchwyt) {      
// ...
          xmlhttp.onCompletion = function(){
uchwyt(parametry);
          };          
// ...
  }

MoveR(function(parametry){
alert(parametry);
});
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.