si, infatti la funzione oncomplete viene eseguita con scope = window non il this al momento in cui la definisci.
Devi usare il metodo bind per cambiare lo scope della funzione:
Se c'è qualcosa di non chiaro chiedi purecodice:var TuaClass = new Class({ 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; }, completeFunction : function(response){ //qui il this è uguale all'oggetto perché hai usato il bind() senza sarebbe window this.variable = response; this.complete = true; } getLastResponse : function(){ return this.variable; }, send : function(sql){ this.req.post({"sql" : sql}); }, completed : function(){ return this.complete; } }); var obj = new TuaClasse(); obj.send("SELECT * FROM tabella WHERE campo = 'QUALCOSA' ORDER BY altrocampo DESC"); if(obj.completed()) alert(obj.getLastResponse());

Rispondi quotando