Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    24

    onLoad all'interno di una funzione...

    Salve a tutti!
    Vengo subito al sodo:
    ho una funzione che mi carica dei dati da una pagina php e vorrei che sull'evento onload mi ritornasse uno dei dati.
    Con un esempio chiarisco meglio la situazione:

    codice:
    function numeroParole(simb) {
    		invia = new LoadVars();
    		invia.simbolo = simb;
    		datiparola = new LoadVars();
    		datiparola.onLoad = function(success) {
    			if (success) {
    			  return datiparola["numero"];
    			} else {
    			  _root.uscite = "Errore nel caricamento del file!";
    			}
    		};
    		invia.sendAndLoad("retrieve_wordsN.php", datiparola);
    	}
    più in basso vorrei riassegnare ad una variabile il valore di ritorno della funzione:

    codice:
    pippo = numeroParole("c");
    il problema è che numeroParole() non mi ritorna il valore di datiparola["numero"], probabilmente xchè questo 'rimane dentro' la funzione onLoad...
    Qualcuno sa come ovviare a questo problema?

  2. #2
    la funzione onLoad di un LoadVars e' una Void, quindi non puoi fare un return diretto anche perche' e' un evento in latenza, non e' una funzione in tempo reale ... quindi l' assegnazione non avverra' , o meglio, nel caso avvenga, se nella riga dopo fai un trace(pippo ) questo non conterra' niente ...

    Oltre questo, dichiari 2 variabili interne ad una funzione, quindi difficilmente l' onLoad di datiparola avverra', a meno che non sono gia' state dichiarate fuori, quindi con scope globale ...

    una soluzione potrebbe essere questa:

    codice:
    invia = new LoadVars();
    datiparola = new LoadVars();
    pippo = '';
    
    function numeroParole(simb) {
    	invia = new LoadVars();
    	invia.simbolo = simb;
    	datiparola = new LoadVars();
    	datiparola.onLoad = function(success) {
    		if ( success && this["numero"] != undefined ) {
    			pippo = this["numero"];
    			trace( pippo );
    		} else {
    			_root.uscite = "Errore nel caricamento del file!";
    		}
    	};
    	invia.sendAndLoad("retrieve_wordsN.php", datiparola);
    }
    numeroParole( "c" );
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    24
    Grazie mille!
    Domani la provo subito!

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    24
    Ok funge!
    L'unica cosa è che devo dichiarare la variabile pippo così:

    codice:
    var pippo = '';
    altrimenti non la vede ...
    Grazie mille!

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    24

    Re: onLoad all'interno di una funzione...

    Come non detto, c'è un problema...
    La funzione adesso è questa:

    codice:
    var invia = new LoadVars();
    var datiparola = new LoadVars();
    var pippo;
    function numeroParole(simb) {
      invia.simbolo = simb;
      datiparola.onLoad = function(success) {
        if (success && this["numero"] != undefined) {
          pippo = this["numero"];
        } else {
          _root.uscite = "Errore nel caricamento del file retrieve_wordsN!";
        }
      };
      invia.sendAndLoad("retrieve_wordsN.php", datiparola);
    }
    il problema è che alla prima chiamata pippo è sempre vuota

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    24

    Re: Re: onLoad all'interno di una funzione...

    Richiamo la funzione così:

    codice:
    numeroParole("c");
    _root.debug += pippo+",";

  7. #7

    Re: Re: Re: onLoad all'interno di una funzione...

    Originariamente inviato da gatiba
    Richiamo la funzione così:

    codice:
    numeroParole("c");
    _root.debug += pippo+",";
    allora non hai capito o non mi sono spiegato ...

    qualunque cosa tu debba fare con pippo, puoi farla solo dopo o dentro il metodo onLoad ... altrimenti non avra' alcun valore perche' l' onLoad non e' una funzione di ritorno immediato, e' a latenza indefinita ...

    metti tutto il resto dentro un' altra funzione e richiamala a fine onLoad ...
    codice:
    function quelloChetiPare() {
    _root.debug += pippo+",";
    }
    
    var invia = new LoadVars();
    var datiparola = new LoadVars();
    var pippo;
    function numeroParole(simb) {
      invia.simbolo = simb;
      datiparola.onLoad = function(success) {
        if (success && this["numero"] != undefined) {
          pippo = this["numero"];
          quelloChetiPare();
        } else {
          _root.uscite = "Errore nel caricamento del file retrieve_wordsN!";
        }
      };
      invia.sendAndLoad("retrieve_wordsN.php", datiparola);
    }
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    24

    Re: Re: Re: Re: onLoad all'interno di una funzione...

    No guarda, non riesco a far funzionare neanche il tuo costrutto.
    A me serve una cosa ben precisa, vedo di spiegarti meglio:

    codice:
    onClipEvent (load) {
    	var invia = new LoadVars();
    	var datiparola = new LoadVars();
    	var pippo;
    	function ritorna() {
    		_root.prova = pippo;
    	}
    	function numeroParole(simb) {
    		// popolo con quello che voglio inviare
    		invia.simbolo = simb;
    		// se caricati...
    		datiparola.onLoad = function(success) {
    			if (success && this["numero"] != undefined) {
    				// tutto ok...
    				pippo = this["numero"];
    				ritorna();
    			} else {
    				// oh oh un problema!
    				_root.uscite = "Errore nel caricamento del file retrieve_wordsN!";
    			}
    		};
    		// ora invio le variabili e salvo ciò che ricevo dal PHP in "datiparola"...
    		invia.sendAndLoad("retrieve_wordsN.php", datiparola);
    	}
    }
    onClipEvent (enterFrame) {
    	if (_root.started == 1 && _root.nextword == 1) {
    		_root.nextword = 0;
    		numeroParole(invia.simbolo);
    		_root.debug += _root.prova+",";
    	}
    }
    In pratica ho bisogno del valore di _root.prova all'interno di un'altra funzione:
    Tipo:
    codice:
    function caio(){
      numeroParole(invia.simbolo);
      invia.numeroparola = generaRandom(_root.prova);
    }
    ma il primo valore di _root.prova è sempre nullo!

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    24
    Se vuoi ti posto tutto l'actionscript, volevo evitarlo xchè è un pò lungo...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.