Comment utiliser externalInterface pour permettre à Flash d'appeler javascript pour mettre à jour une valeur à l'écran?

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

Question

J'ai une animation Flash intégrée dans une page PHP. La page PHP affiche une valeur pour l'utilisateur (le nombre d'images qu'il a téléchargées). Lorsque l'utilisateur télécharge une nouvelle image, je souhaite que la valeur de la page PHP reflète le changement sans actualiser la page.

Cette valeur est extraite de la base de données à l'aide de MySQL. Alors voici ce que j'ai fait jusqu'à présent -

Sur la page PHP où je veux montrer la valeur que j'ai un div

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

Ceci appelle un fichier PHP externe qui interroge la base de données et affiche le résultat comme suit

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

Lorsque la page est chargée pour la première fois, le numéro correct s'affiche dans le div et tout fonctionne correctement. L'étape suivante consiste à appeler quelque chose pour mettre à jour le contenu de cette div lorsque la valeur change. Je vais donc configurer externalInterface en flash pour appeler une fonction javascript.

C’est là que je suis coincé, je veux pouvoir faire quelque chose comme ça -

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

et appelez-le par

ReplaceContentInContainer(content_info)

Je réalise que cela ne va pas marcher, mais est-ce que quelqu'un peut me montrer comment obtenir ce résultat?

merci beaucoup

Était-ce utile?

La solution

group= <?php echo($groupid); ?> ne sera exécuté que lorsque PHP créera la page. Vous devez stocker cette valeur dans une variable du code javascript. Voir si cela fonctionne.

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

Vous pouvez maintenant utiliser le 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");
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top