Javascript obiekty i ajax

0

Witam napisałem sobie kod którym wysyłam zapytania kod wygląda tak:

var miniajax = new function()
{

request = function()
 {
 var ajax_obj = false;
 if (window.XMLHttpRequest)
  {
  ajax_obj = new XMLHttpRequest();
  }
 else if (window.ActiveXObject)
  {
  ajax_obj = new ActiveXObject("Microsoft.XMLHTTP");
  }
 return ajax_obj;
 }
	
this.get = function(dataSource)
 {
 var odpowiedz = false;
 odpowiedz = request();

 odpowiedz.open("GET", dataSource);

  odpowiedz.onreadystatechange = function()
   {
   if(odpowiedz.readyState == (1 || 0))
    {
    return "Ladowanie...";
    }

   if (odpowiedz.readyState == 4 && odpowiedz.status == 200)
    {
    return odpowiedz.responseText;
    }
	 
  }
   odpowiedz.send(null);
   delete odpowiedz;
}
 
}

Zapytania wysyłam tak:

 alert(miniajax.get('founduser.php]'));

tylko że wynik w alercie to undefined.. jak podglądam w firebugu to zapytanie jest wysłane a odpowiedź odebrana ale tekst nie pojawia się w alercie dlaczego?

Z góry dziękuję za pomoc.

0

undefined wynika z braku returna z funkcji this.get(). Return jest, ale w funkcji onreadystatechange, która jest wywoływana asynchronicznie gdy zmieni się stan żądania. Powinieneś przekazać callback, który zostanie wywołany w onreadystatechange.

miniajax.get('founduser.php', function(text) {alert(text); });

// +
this.get = function(dataSource, callback) {
///...
  odpowiedz.onreadystatechange = function() {
   if (odpowiedz.readyState == 4 && odpowiedz.status == 200) {
     callback(odpowiedz.responseText);
   }
}
//...

Btw if(odpowiedz.readyState == (1 || 0)) jest równoznaczne z if(odpowiedz.readyState == 1), bo najpierw jest ewaluowane 1||0, czego wynikiem jest 1.

0

Super dzięki za pomoc!

1 użytkowników online, w tym zalogowanych: 0, gości: 1