ugrás a tartalomhoz

Ajax, JS visszatérési érték

NZol · 2010. Okt. 15. (P), 13.31
Sziasztok!
Kérnék egy kis segítséget. A probléma annyi, hogy nem tudom hogyan tudnék visszatérési értéket adni a "Vizsgal()" függvénynek, a "Kesz()" függvény visszatérési értéke alapján. Pl.: ha a "Kesz()" true -val tér vissza akkor a "Vizsgal()" is true -val térjen vissza.


<script type="text/javascript">

var req2;
    var url = "teszt/";
            if(window.XMLHttpRequest)
            {
               req2 = new XMLHttpRequest();
            }else{
              req2 = new ActiveXObject("Microsoft.XMLHTTP");
            }

            

function Vizsgal(){  
      req2.onreadystatechange = Kesz;
              
      req2.open("GET",url+"ellenor.php",true);
      req2.send(null);           
}

function Kesz(){  
  if (req2.readyState == 4 || req2.readyState == 'complete') {
          
         //alert(req2.responseText);  //itt kiírja amit az ellenor.php küld neki
           
           if(req2.responseText == 'ok'){return true;}
           else if(req2.responseText == 'no'){return false;}
      }
}

</script>    
Előre is köszi a segítséget.
 
1

Sehogy

Poetro · 2010. Okt. 15. (P), 13.50
Leginkább sehogy, mivel a Kesz és a Vizsgal függvényeknek semmi közük egymáshoz, mivel a Kesz függvényt egy esemény váltja ki, amikorra a Vizsgal már régen visszatért. Valami másfajta logikát keress az ellenőrzésre. Mondjuk ha formról van szó, akkor eleve állítsd meg a submit-ot, és a Kesz függvényben küldd el ténylegesen.
2

Így lehetetlen. A Vizsgal()

kuka · 2010. Okt. 15. (P), 14.05
Így lehetetlen. A Vizsgal() azonnal befejeződik, a Kesz() pedig valószínűleg még el sem indult.

Ha azt akarod, hogy a Vizsgal() meg tudja mondani, hogy sikeres volt-e a kérés, akkor szinkron kapcsolatot használj, ne aszinkront.
3

Igen, formot ellenőriznék

NZol · 2010. Okt. 15. (P), 14.14
Igen, formot ellenőriznék vele.

<form method='post' action='feldolgoz.php' onSubmit='return Vizsgal()'>
...
</form>

Tudnátok esetleg hasonló jellegű példakóddal segíteni, mert sajnos még nem igazán vagyok ebben a témában otthon.
4

function Vizsgal() {

kuka · 2010. Okt. 15. (P), 14.41

function Vizsgal()
{
  req2.open("GET",url+"ellenor.php",false);
  req2.send(null);
  return req2.status == 200 && req2.responseText == 'ok';
}
5

Köszi

NZol · 2010. Okt. 15. (P), 15.03
Ettől jobb példát nem is kaphattam volna :)
Nagyon szépen köszönöm a segítséget.