setDataXMl

在前面的例子中,我们使用了dataURL方法提供数据给FusionCharts.在dataURL方法中,数据包含在一个外部物体XML文件中(如data.xml)或者一个相关URL地址(如ReturnXMLData.asp)
此外,还存在另一种方法来提供XML数据给FusionCharts - dataXML方法.
在此方法中,XML数据存在相同的页面中,FusionCharts也是嵌入的。当使用此方法时,你不需要创建而外的XML文件(像data.xml),他在HTML页面提供。
当使用dataXML方法,你必须非常小心引号冲突. 例如,如果你在XML文档中的属性使用单引号,在你的HTNL页面中请务必使用双引号封装整个XMl字符串,以作为OBJECT/EMBED元素的属性. 加引号的冲突往往不会引起错误,但是可能会一直在想为什么图表没有被渲染(你会得到一个空白的空间而不是图表)
让我们快速看看上面的例子.

在直接嵌入的HTML页面中使用dataXML方法
创建一个chart.html的副本并另存为ChartDataXML.html此外,修改代码如下:

代码
<html>
<body bgcolor="#ffffff">
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="900" height="300" id="Column3D" >
<param name="movie" value="../FusionCharts/Column3D.swf" />
<param name="FlashVars" value="&dataXML=<chart caption='Monthly Sales Summary' subcaption='For the year 2006' xAxisName='Month' yAxisName='Sales' numberPrefix='$'><set label='January' value='17400' /><set label='February' value='19800' /><set label='March' value='21800' /><set label='April' value='23800' /><set label='May' value='29600' /><set label='June' value='27600' /><set label='July' value='31800' /><set label='August' value='39700' /><set label='September' value='37800' /><set label='October' value='21900' /><set label='November' value='32900' /><set label='December' value='39800' /></chart>">
<param name="quality" value="high" />
<embed src="../FusionCharts/Column3D.swf" flashVars="&dataXML=<chart caption='Monthly Sales Summary' subcaption='For the year 2006' xAxisName='Month' yAxisName='Sales' numberPrefix='$'><set label='January' value='17400' /><set label='February' value='19800' /><set label='March' value='21800' /><set label='April' value='23800' /><set label='May' value='29600' /><set label='June' value='27600' /><set label='July' value='31800' /><set label='August' value='39700' /><set label='September' value='37800' /><set label='October' value='21900' /><set label='November' value='32900' /><set label='December' value='39800' /></chart>" quality="high" width="900" height="300" name="Column3D" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</body>
</html>

正如你在上面看到的,我们已经通过追加它作为FlashVars属性来提供完成的数据,格式如下:
<PARAM NAME="FlashVars" Value="&dataXML=completeXMLData">

在EMBED标记中, 你需要增加如下代码:
<EMBED ... FlashVars="&dataXML=completeXMLData">
这样你就可以从同一个页面中加载数据显示FusionCharts图表。

使用dataXML方法,同时使用JavaScript嵌入图表
如果您使用FusionCharts的JavaScript类嵌入图表,您可以使用dataXML为如下方式:
代码
<html>
<head>
<script language="JavaScript" src="../FusionCharts/FusionCharts.js"></script>
</head>
<body bgcolor="#ffffff">

<div id="chartdiv" align="center">The chart will appear within this DIV. This text will be replaced by the chart.</div>
<script type="text/javascript">
var myChart = new FusionCharts("../FusionCharts/Column3D.swf", "myChartId", "900", "300", "0", "0");
myChart.setDataXML("<chart caption='Monthly Sales Summary' subcaption='For the year 2006' xAxisName='Month' yAxisName='Sales' numberPrefix='$'><set label='January' value='17400' /><set label='February' value='19800' /><set label='March' value='21800' /><set label='April' value='23800' /><set label='May' value='29600' /><set label='June' value='27600' /><set label='July' value='31800' /><set label='August' value='39700' /><set label='September' value='37800' /><set label='October' value='21900' /><set label='November' value='32900' /><set label='December' value='39800' /></chart>");

myChart.render("chartdiv");
</script>

</body>
</html>
上面你可以清楚地看到,不使用setDataURL方法提供了XML文件的路径,在这里我们使用setDataXML方法,来提供完整的XML数据本身
现在查看图表,你会得到和以前相同的输出.

使用这种方法,然而,当数据量非常大时有时会出问题,发生此问题是由于浏览器dataXML字符串长度限制所导致。当你使用dataXML方法进行大数据量操作时,浏览器会忽略指定长度后面的数据。这将导致FusionCharts的挂起(什么都不会显示在屏幕上)完整的数据并没有提供给它。因此,在使用大数据量时候,建议使用dataURL方法。(基本上,在多系列/组合图表使用时)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值