si, infatti le richieste asincrone funzionano in maniera diversa, ti conviene fare in questo modo
codice:
var TuaClass = new Class({
Implements: Events,
initialize : function(){
this.variable = null; //Qui salverò la risposta della chiamata AJAX
this.req = new Request({url: 'database.php',
onRequest : this.requestFunction.bind(this),
onComplete: this.completeFunction.bind(this)
});
this.complete = true;
},
requestFunction : function(){
this.complete = false;
this.fireEvent("request", this);
},
completeFunction : function(response){
//qui il this è uguale all'oggetto perché hai usato il bind() senza sarebbe window
this.variable = response;
this.complete = true;
this.fireEvent("complete", this);
},
getLastResponse : function(){
return this.variable;
},
send : function(sql){
this.req.post({"sql" : sql});
},
completed : function(){
return this.complete;
}
});
var obj = new TuaClass();
obj.addEvent("complete", function(){
//Questo viene eseguito dopo che la richiesta Asincrona è completa
alert("Risposta dal Server: "+this.getLastResponse());
});
obj.addEvent("request", function(){
//Se vuoi fare qualcosa quando lanci la richiesta AJAX metti qualcosa qui
});
obj.send("SELECT * FROM tabella WHERE campo = 'QUALCOSA' ORDER BY altrocampo DESC");
Un consiglio, dai una lettura a http://mootools.net/docs/core/Class/Class e http://mootools.net/docs/core/Class/Class.Extras