Struppi: Problem mit Rückgabewert

Beitrag lesen

um das mal Schritt für Schritt zu verstehen.
Ich rufe mit der Funktion getKBInfo().
Diese macht dann meinen Ajax Request. Wird dann nicht gewartet bis sqlAnswer eine Antwort von der Funktion erhalten hat, sondern läuft sofort weiter in der Funktion und führt das return aus?

Nein, sie kehrt sofort zurück und irgendwann wird die Funktion onreadystate ausgeführt.

var sqlAnswer = getDataFromSQL('KB');
return sqlAnswer;

  
Du musst eine Callbackfunktion benutzen, dort wo du die Antwort brauchst.  
  
~~~javascript
getDataFromSQL('KB', function(answer) {  
tu_was_mit(antwort);  
} );  

Dazu musst du aber auch die Funktion ein wenig umnbauen.

function getDataFromSQL(type, callback)  
{  
var http_request = null;// keine globalen Variabeln!  
...  
  
http_request.onreadystatechange = function()  
 {  
  if (http_request.readyState == 4)  
  {  
   var answerText = http_request.responseXML;  
   callback(answerText);  
  }  
 };  
}

Struppi.