我想用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.声明:
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字符串数据
这是个测试例子