Come posso usare externalInterface per consentire a Flash di chiamare javascript per aggiornare un valore sullo schermo?

StackOverflow https://stackoverflow.com/questions/1809168

Domanda

Ho un filmato Flash incorporato in una pagina PHP. La pagina PHP mostra un valore per l'utente (il numero di immagini che hanno caricato). Quando l'utente carica una nuova immagine, voglio che il valore sulla pagina PHP rifletta la modifica senza aggiornare la pagina.

Questo valore viene recuperato dal database utilizzando MySQL. Quindi ecco cosa ho fatto finora -

Nella pagina PHP in cui voglio mostrare il valore ho un div

<div id="content_info"><script type="text/javascript" src="getInfo.php?group= <?php echo($groupid); ?> "></script></div>

Questo chiama un file PHP esterno che interroga il database e genera il risultato in questo modo

Header("content-type: application/x-javascript");
//do the query with PHP and get $number and then output
echo "document.write(\" (".$number.")\")";

Quando la pagina viene caricata per la prima volta, nel div viene visualizzato il numero corretto e quindi tutto funziona correttamente. Il prossimo passo è chiamare qualcosa per aggiornare il contenuto di questo div quando il valore cambia. Quindi imposterò externalInterface in flash per chiamare una funzione javascript per farlo.

Questo è il punto in cui sono bloccato, voglio essere in grado di fare qualcosa del genere -

function ReplaceContentInContainer(id) {
var container = document.getElementById(id);
container.innerHTML = getInfo.php?type=new&group= <?php echo($groupid) ?>;
}

e chiamalo entro

ReplaceContentInContainer(content_info)

Mi rendo conto che non funzionerà, ma qualcuno può mostrarmi come ottenere questo risultato?

molte grazie

È stato utile?

Soluzione

group= <?php echo($groupid); ?> verrà eseguito solo quando PHP crea la pagina. Dovresti archiviare quel valore all'interno di una variabile nel javascript. Vedi se funziona.

<div id="scriptDiv">
    <script type="text/javascript">
    <!-- store the group id -->
        var groupID = <?php echo($groupid); ?>;
        function getGroupID()
        {
           return groupID;
        }
        function updateValue(value)
        {
           document.getElementById("content_info").innerHTML = value;
        }
    </script>
    <div id="content_info">
       <!-- for initial value -->
       <script type="text/javascript" 
            src="getInfo.php?group= <?php echo($groupid); ?> ">
       </script>
    </div>
</div>

Ora puoi usare il flash URLLoader:

var ldr:URLLoader = new URLLoader();
var gid:String = ExternalInterface.call("getGroupID");
var req:URLRequest = new URLRequest("getInfo.php");
req.data = {type:"new", group:gid};
ldr.addEventListener(Event.COMPLETE, onLoad);
ldr.addEventListener(IOErrorEvent.IO_ERROR, onError);
ldr.load(req);

private function onLoad(e:Event):void
{
    var data:String = URLLoader(e.target).data;
    ExternalInterface.call("updateValue", data);
}
private function onError(e:IOErrorEvent):void
{
    trace("ioError");
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top