open flash chart 实时图形显示,出错,高手来解决一下

我想用Open flash chart 做一个图形实时显示,可以总有点问题,代码如下:
1.载入js

<script type="text/javascript" src="../inc/ofc/js/jquery-1.4.2.min.js"></script> 
<script type="text/javascript" src="../inc/ofc/js/json/json2.js"></script> 

2.声明:


3.调用:
var data ={};
var flashvars = {};
var params = {scale:"noorder"};
var attributes = {wmode:"Transparent"}; //window, Opaque, Transparent 三种模式
var so= new swfobject.embedSWF("../inc/ofc/open-flash-chart.swf", "my_chart", "300", "220","9.0.0",flashvars,params,attributes);

4.相应的函数
function ofc_ready()
   {
   alert('ofc_ready');
   tmp = findSWF("my_chart");
   x = tmp.load( JSON.stringify(my_chart));
   }
   function open_flash_chart_data()
   {
   alert( 'reading data' );
   return JSON.stringify(data);
   }
   function findSWF(movieName)
   {
   if (navigator.appName.indexOf("Microsoft")!= -1) //判断是否为IE浏览器
   {
return window[movieName];
}
else
{
return document[movieName];
}

   }
5.用AJAX调用aspx的内容

var showXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
function getXMLHTTPObj()
{
var url = "bar.aspx";
showXMLHTTP.open("GET", url, true);
showXMLHTTP.setRequestHeader("If-Modified-Since","0");
showXMLHTTP.onreadystatechange = updatePage;
showXMLHTTP.send(null);
}
function updatePage()
{
if (showXMLHTTP.readyState == 4)
{
if (showXMLHTTP.status == 200)
{
try
{
//alert(showXMLHTTP.responseText);
var httpText = showXMLHTTP.responseText;
data=eval('('+httpText+')'); //标准的json格式
[b][color=red]tmp = findSWF("my_chart");
x = tmp.reload(); [/color][/b]
}
catch(e)
{alert("W");
}
}
else if (showXMLHTTP.status == 404)
{
//alert("showmapXMLHTTP URL does not exist");
}
else
{
//alert("Error: status code is " + showmapXMLHTTP.status);
}
}
}

6 问题:

为什么调用 x = tmp.reload();函数,总是异常,原来tep是空,没有找到
tmp = findSWF("my_chart");返回的是空值。

7 有什么好的办法么?

getXMLHTTPObj();
window.setInterval(getXMLHTTPObj,5000);

最好是放在一个按钮事件里面写。或者放在ofc_ready 函数里面
function ofc_ready(){
getXMLHTTPObj();
}

不然在执行load的时候swf不一定渲染了。

查找不到my_chart对象.
直接使用 so对象就行了,或者window.so。

tmp = findSWF("my_chart");
x = tmp.reload();
直接使用 so.reload()

正常会调用那两个函数。主要是SWF没有reload函数。

刷新数据使用load函数

findSWF('flashContent').load

function test(){
data={"elements" : [{"type" : "bar","text" : "\u5317\u4eac","values" : [9.9355,9.9355,9.9355]}]};
findSWF('flashContent').load(open_flash_chart_data());
}

load 函数刷新swf 数据 参数 json字符串数据

这是个测试例子





<br><br> var so = swfobject.embedSWF(&quot;open-flash-chart.swf&quot;, &quot;flashContent&quot;, &quot;300&quot;, &quot;200&quot;, &quot;7.0.0&quot;);<br> alert(so)<br>
<br> function test(){<br> data={&quot;elements&quot; : [{&quot;type&quot; : &quot;bar&quot;,&quot;text&quot; : &quot;\u5317\u4eac&quot;,&quot;values&quot; : [9.9355,9.9355,9.9355]}]};<br> findSWF(&#39;flashContent&#39;).load(open_flash_chart_data());<br> }<br> function ofc_ready()<br> {<br> //alert(&#39;ofc_ready&#39;);<br> }</p> <p>function open_flash_chart_data()<br> {<br> return JSON.stringify(data);<br> }</p> <p>function findSWF(movieName) {<br> if (navigator.appName.indexOf(&quot;Microsoft&quot;)!= -1) {<br> return window[movieName];<br> } else {<br> return document[movieName];<br> }<br> }<br> var data = {<br> &quot;elements&quot; : [{<br> &quot;type&quot; : &quot;bar&quot;,<br> &quot;text&quot; : &quot;\u5317\u4eac&quot;,<br> &quot;values&quot; : [9.9355]<br> }]<br> };<br>