我目前正在使用FusionCharts免费填充一些图表。
在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 -> renderChart();to $chart -> renderChart(true);
它将向我展示“bgcolor=”。
为什么会发生这种情况,我该如何解决?还有其他更简单的方法可以通过ajax填充detailedChart吗?
百万谢谢。
发布于 2013-04-09 07:34:04
如果您进行调查,您将看到在您的HTML (一个DIV)和SCRIPT (一些要在DIV中呈现图表的JavaScript代码)的responseText中。
现在,当您将responseText设置为HTML元素的innerHTML时,HTML解析器将添加和显示HTML (DIV带有文本chart)。但是,它不执行SCRIPT部件(用于在DIV中呈现代替chart文本的图表)。
实现呈现的理想方法是执行SCRIPT。
如果使用jQuery 阿贾克斯函数,这将得到很好的管理,类似于:
function detailedChart(couID) {
jQuery.ajax({
url: "getDetailedResult.php?couID=" + couID,
success: function(responseText) {
jQuery("#detailedDiv").html(responseText);
}
});
} 注意:您需要在HTML的头部加载jquery文件。
https://stackoverflow.com/questions/15895651
复制相似问题