0

我目前正在使用 FusionCharts Free 来填充一些图表。

在 main.php 中:

<html>
<head>
    <script language="JavaScript" src="FusionCharts/FusionCharts.js" ></script>

    <script language="JavaScript">
        function ajax(divID)
        {
            if (window.XMLHttpRequest)
                xmlhttp=new XMLHttpRequest();
            else
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

            xmlhttp.onreadystatechange=function()
            {
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                    document.getElementById(divID).innerHTML=xmlhttp.responseText;
            }

            return xmlhttp;
        }

        function detailedChart(couID)
        {
            xmlhttp = ajax("detailedDiv");
            xmlhttp.open("GET", "getDetailedResult.php?couID=" + couID, true);
            xmlhttp.send(null); 
        }       
    </script>
</head>

<body>
    <?php
        $strDataURL = "GetResult.php";
        echo renderChart("FusionCharts/FCF_Column3D.swf", $strDataURL, "", "Chart1", 600, 300);
    ?>

    <div id="detailedDiv" align="center"></div>

</body>
</html>

在 GetResult.php 中:

if ($result)    
    $chart -> addDataFromDatabase($result, "TOTAL", "NAME", "", "JavaScript:detailedChart('##ID##')");

在 GetDetailedResult.php 中

<?php
    $chart -> newFusionCharts("Column3D", "900", "500");
    $chart -> setSWFPath("FusionCharts/");
    $chart -> setChartParams("caption=....");
    $chart -> addDataFromDatabase($result, "TOTAL", "NAME");
    $chart -> renderChart();
?>

现在的问题是我想使用 ajax 创建从 GetResult 到 GetDetailedResult 的向下钻取,但它会显示“图表”。而不是图表。如果我改变

$chart -> 渲染图表();到 $chart -> renderChart(true);

它会告诉我 bgcolor=""。

为什么会发生这种情况,我该如何解决?还有其他更简单的方法可以通过 ajax 填充详细图表吗?

百万谢谢。

4

1 回答 1

0

HTML如果您进行调查DIV,您将看到SCRIPTDIVresponseText.

现在,当您将 设置responseTextinnerHTMLHTML 元素的 时,HTML DOM 解析器会添加并显示 HTML 部分(带有文本的 DIV chart)。但是,它不执行该SCRIPT部分(即用于在DIV替换chart文本中呈现图表。

实现渲染的理想方法是执行SCRIPT.

如果您使用jQuery ajax函数,这将得到很好的管理,类似于:

    function detailedChart(couID) {
        jQuery.ajax({
           url: "getDetailedResult.php?couID=" + couID,
           success: function(responseText) {
              jQuery("#detailedDiv").html(responseText);
           }
      });

    }  

注意:您需要在 HTML 的头部加载 jquery js 文件。

于 2013-04-09T07:34:04.710 回答