Como faço para usar ExternalInterface para permitir que o Flash para javascript chamada para atualizar um valor na tela?

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

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

Foi útil?

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");
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top