0

我有一个嵌入在 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)

我意识到这行不通,但谁能告诉我如何得到这个结果?

非常感谢

4

1 回答 1

2

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>

现在您可以使用 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");
}
于 2009-11-27T15:19:31.330 回答