Flash가 JavaScript를 호출하여 화면에서 값을 업데이트 할 수 있도록 externalInterface를 사용하려면 어떻게합니까?
-
05-07-2019 - |
문제
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의 내용을 업데이트하기 위해 무언가를 호출하는 것입니다. 따라서 플래시로 외부 인터페이스를 설정하여 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");
}
제휴하지 않습니다 StackOverflow