¿Cómo uso externalInterface para permitir que Flash llame a JavaScript para actualizar un valor en la pantalla?

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

Pregunta

Tengo una película Flash que está incrustada en una página PHP. La página PHP muestra un valor para el usuario (el número de imágenes que ha cargado). Cuando el usuario carga una nueva imagen, quiero que el valor en la página PHP refleje el cambio sin actualizar la página.

Este valor se recupera de la base de datos usando MySQL. Así que aquí está lo que he hecho hasta ahora -

En la página PHP donde quiero mostrar el valor, tengo un div

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

Esto llama a un archivo PHP externo que consulta la base de datos y genera el resultado de esta manera

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

Cuando la página se carga por primera vez, el número correcto se muestra en el div y todo funciona bien. El siguiente paso es llamar a algo para actualizar el contenido de este div cuando el valor cambia. Así que configuraré externalInterface en flash para llamar a una función de JavaScript para hacer esto.

Aquí es donde estoy atascado, quiero poder hacer algo como esto:

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

y llame a esto por

ReplaceContentInContainer(content_info)

Me doy cuenta de que esto no va a funcionar, pero ¿alguien puede mostrarme cómo obtener este resultado?

muchas gracias

¿Fue útil?

Solución

group= <?php echo($groupid); ?> se ejecutará solo cuando PHP cree la página. Debe almacenar ese valor dentro de una variable en el javascript. Vea si esto funciona.

<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>

Ahora puede usar 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");
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top