2009-11-27 2 views
0

J'ai un film Flash qui est incorporé dans une page PHP. La page PHP affiche une valeur pour l'utilisateur (le nombre d'images téléchargées). Lorsque l'utilisateur télécharge une nouvelle image, je veux que la valeur de la page PHP reflète la modification sans actualiser la page.Comment utiliser externalInterface pour permettre à Flash d'appeler javascript pour mettre à jour une valeur sur l'écran?

Cette valeur est extraite de la base de données en utilisant MySQL. Donc, voici ce que Ive 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> 

Cela appelle un fichier PHP externe qui interroge la base de données et renvoie le résultat comme celui-ci Lorsque la page est chargée pour la première fois, le nombre correct s'affiche dans la div et tout fonctionne donc correctement. L'étape suivante consiste à appeler quelque chose pour mettre à jour le contenu de cette div lorsque la valeur change. Donc, je vais configurer externalInterface en flash pour appeler une fonction javascript pour ce faire.

C'est là Im coincé, je veux être capable de faire quelque chose comme ça -

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

et appeler cela par

ReplaceContentInContainer(content_info) 

Je sais que ce isnt va travailler, mais quelqu'un peut-il spectacle moi comment obtenir ce résultat?

merci beaucoup

Répondre

2

group= <?php echo($groupid); ?> seront exécutées que lorsque PHP crée la page. Vous devriez stocker cette valeur dans une variable dans le javascript. Voyez 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 utiliser URLLoader de flash:

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"); 
} 
Questions connexes