Как мне использовать externalInterface, чтобы Flash мог вызывать JavaScript для обновления значения на экране?

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

Вопрос

У меня есть Flash-фильм, который встроен в страницу PHP. Страница PHP отображает значение для пользователя (количество загруженных ими изображений). Когда пользователь загружает новое изображение, я хочу, чтобы значение на странице PHP отражало изменение без обновления страницы.

Это значение извлекается из базы данных с использованием MySQL. Итак, вот что я сделал до сих пор -

На странице PHP, где я хочу показать значение, у меня есть div

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

Это вызывает внешний PHP-файл, который запрашивает базу данных и выводит результат, подобный этому

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

Когда страница загружается в первый раз, в div отображается правильное число, поэтому все работает нормально. Следующим шагом является вызов чего-либо для обновления содержимого этого div при изменении значения. Поэтому я настрою externalInterface во флэш-памяти для вызова функции javascript, чтобы сделать это.

Вот где я застрял, я хочу иметь возможность сделать что-то вроде этого -

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

и назовите это

ReplaceContentInContainer(content_info)

Я понимаю, что это не сработает, но кто-нибудь может показать мне, как получить этот результат?

большое спасибо

Это было полезно?

Решение

group= <?php echo($groupid); ?> будет выполняться только тогда, когда PHP создает страницу. Вы должны хранить это значение внутри переменной в JavaScript. Посмотрите, работает ли это.

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

Теперь вы можете использовать флэш-память 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");
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top