Wewe: Mootools Request

Beitrag lesen

Leider ist der Rückgabewert immer undefined abwohl das alert() zuvor immer den richtigen Wert bringt.

var get_availability = function(option){
var return_value;
var sendstring = 'herstellernummer1='+herstellernummer1+'&brandNo='+brandNo;

var req = new Request({url:'html/avail.php',methode:'post',
onSuccess: function(html){
alert(html);
return_value = html;
}
onFailure: function() {
alert("false");
return_value = false;
}
});
req.send(sendstring);

return return_value;
});

Mit new Request() erzeugst du einen AJAX-Aufruf – das erste A in AJAX steht für asynchron, deine onSuccess-Routine läuft also unabhängig von der Funktion, mit der du das Request-Objekt erzeugst. Insbesondere wird es quasi unmöglich sein, dass du in einer Zeile die AJAX-Anfrage an den Server schickst (req.send(sendstring)) und dieser derart schnell antwortet, dass in der nächsten Zeile (return return_value) onSuccess ablaufen und return_value füllen konnte. Nochmal: Ab req.send() hast du _zwei_ Programmstränge, die gleichzeitig aktiv sind; der eine enthält return return_value, der andere den kompletten HTTP-Austausch mit dem Server sowie die Zeile return_value = html (und dein alert(html) zum Debuggen natürlich).

Willst du die Antwort des Servers an andere Funktionen weitergeben, musst du diese Weitergabe in der onSuccess-Funktion direkt erledigen (nicht indirekt, wie derzeit). Wie das genau aussieht, lässt sich so nicht sagen, dazu müsste man wissen, wie du nach return return_value weiterzuarbeiten gedenkst.