Wie verwende ich ExternalInterface Flash erlauben Sie Javascript rufen einen Wert auf dem Bildschirm zu aktualisieren?

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

Frage

Ich habe einen Flash-Film, der in einer PHP-Seite eingebettet ist. Die PHP-Seite zeigt einen Wert für den Benutzer (die Anzahl der Bilder, die sie hochgeladen haben). Wenn der Benutzer ein neues Bild hochgeladen möchte ich den Wert auf der PHP-Seite um die Änderung widerzuspiegeln, ohne die Seite zu aktualisieren.

Dieser Wert wird aus der Datenbank mit MySQL abgerufen. So heres was Ive bisher getan -

Auf der PHP-Seite, wo ich den Wert, den ich ein div haben zeigen will

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

Dies erfordert eine externe PHP-Datei, die die Datenbank abfragt und gibt das Ergebnis wie folgt aus

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

Wenn die Seite geladen zum ersten Mal der richtige Nummer in der div zeigt und so arbeitet alles in Ordnung. Der nächste Schritt ist, etwas zu rufen, den Inhalt zu aktualisieren dieses DIV, wenn der Wert ändert. Also werde ich ExternalInterface in Flash einrichten eine Javascript-Funktion aufrufen, dies zu tun.

Dies ist, wo Im stecken, möchte ich so etwas wie dies in der Lage sein zu tun -

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

und nennt dies durch

ReplaceContentInContainer(content_info)

Ich weiß, dies ist nicht zur Arbeit gehen, aber kann mir jemand zeigen, wie dieses Ergebnis zu bekommen?

vielen Dank

War es hilfreich?

Lösung

group= <?php echo($groupid); ?> wird nur dann ausgeführt, wenn PHP Version der Seite. Sie sollten in einer Variable in der Javascript diesen Wert speichern. Prüfen Sie, ob das funktioniert.

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

Jetzt können Sie Blitz des URLLoader verwenden:

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");
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top