Como faço para usar ExternalInterface para permitir que o Flash para javascript chamada para atualizar um valor na tela?
-
05-07-2019 - |
Pergunta
Eu tenho um filme Flash que é embeded em uma página PHP. A página PHP exibe um valor para o usuário (o número de imagens que enviou). Quando o usuário carrega uma nova imagem Eu quero o valor na página PHP para refletir a mudança sem atualizar a página.
Este valor é recuperado do banco de dados usando MySQL. Então aqui está o que Ive feito até agora -
Na página PHP onde eu quero mostrar o valor Eu tenho um div
<div id="content_info"><script type="text/javascript" src="getInfo.php?group= <?php echo($groupid); ?> "></script></div>
Isto exige um arquivo PHP externo que consulta o banco de dados e envia o resultado como este
Header("content-type: application/x-javascript");
//do the query with PHP and get $number and then output
echo "document.write(\" (".$number.")\")";
Quando a página é carregada pela primeira vez os shows números corretos no div e assim tudo funciona bem. O próximo passo é chamar algo para atualizar o conteúdo deste div quando o valor muda. Então eu vou configurar ExternalInterface no Flash para chamar uma função javascript para fazer isso.
Este é o lugar onde Im preso, eu quero ser capaz de fazer algo assim -
function ReplaceContentInContainer(id) {
var container = document.getElementById(id);
container.innerHTML = getInfo.php?type=new&group= <?php echo($groupid) ?>;
}
e chamar isso
ReplaceContentInContainer(content_info)
Sei que isso não está indo para o trabalho, mas alguém pode me mostrar como obter este resultado?
Muito obrigado
Solução
group= <?php echo($groupid); ?>
será executada somente quando o PHP cria a página. Você deve armazenar esse valor dentro de uma variável no javascript. Ver se isso 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>
Agora você pode usar URLLoader
de inflamação:
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");
}