我有一个嵌入PHP页面的Flash电影。 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的内容。所以我将在flash中设置externalInterface以调用javascript函数来执行此操作。
这就是我陷入困境的地方,我希望能够做到这样的事情 -
function ReplaceContentInContainer(id) {
var container = document.getElementById(id);
container.innerHTML = getInfo.php?type=new&group= <?php echo($groupid) ?>;
}
并通过
调用此方法ReplaceContentInContainer(content_info)
我意识到这不会起作用,但任何人都可以告诉我如何获得这个结果?
非常感谢答案 0 :(得分:2)
group= <?php echo($groupid); ?>
。您应该将该值存储在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>
现在您可以使用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");
}