关于fusioncharts的问题(哪会大侠帮帮我呀)

qiaozizhen 发布于 2012/05/29 09:19
阅读 5K+
收藏 0


<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <base href="<%=basePath%>">

  <title>My JSP 'Test.jsp' starting page</title>

  <meta http-equiv="pragma" content="no-cache">
  <meta http-equiv="cache-control" content="no-cache">
  <meta http-equiv="expires" content="0">
  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  <meta http-equiv="description" content="This is my page">
  <script type="text/javascript" src="<%=path%>/Js/FusionCharts.js"></script>
 </head>
      <script type="text/javascript">
      function load(myChartId){
      
          //加载方法需要设置对应的字符串
          var strxml="<graph baseFontSize='15' caption='统计图' refreshInterval='3' hovercapbg='FFECAA'

hovercapborder='FFECAA' formatNumberScale='0' decimalPrecision='0'  showNames='1' valuePosition='auto'

rotateYAxisName='1' numberSuffix='岁' numdivlines='3'  yaxisminvalue='1' yaxismaxvalue='50' xAxisName='年'

yAxisName='岁' rotateNames='1'   divLineColor='ff5904'  showhovercap='1' ><categories><category label='1998我'

/><category label='2005我' /><category label='2015我'/></categories><dataset seriesName='本人年岁增长图'

color='1D8BD1' anchorBorderColor='1D8BD1' anchorBgColor='1D8BD1'><set value='8' /><set value='15' /><set value='25'

/></dataset></graph>";
        updateChartXML(myChartId,strxml);  
         
      }
    </script>
 <body>
  <table width="50%" border="0" cellspacing="0" cellpadding="3"
   align="center">
   <tr>
    <td valign="top" class="text" align="center" id="divTd">
     <div id="chartdiv" align="center">
     </div>
     <script type="text/javascript">
                chart = new FusionCharts("<%=path%>/charts/FusionCharts/MSLine.swf","myChartId","600",

"350","0","1");
                //加载方法需要设置对应的字符串
               chart.setDataXML("<graph baseFontSize='15' caption='统计图' refreshInterval='3' hovercapbg='FFECAA'

hovercapborder='FFECAA' formatNumberScale='0' decimalPrecision='0'  showNames='1' valuePosition='auto'

rotateYAxisName='1' numberSuffix='岁' numdivlines='3'  yaxisminvalue='1' yaxismaxvalue='50' xAxisName='年'

yAxisName='岁' rotateNames='1'   divLineColor='ff5904'  showhovercap='1' ><categories><category label='1990我'

/><category label='2010我' /><category label='2012我'/></categories><dataset seriesName='本人年岁增长图'

color='1D8BD1' anchorBorderColor='1D8BD1' anchorBgColor='1D8BD1'><set value='0' /><set value='20' /><set value='22'

/></dataset></graph>");
      //把图形渲染在指定的地方
    chart.render("chartdiv");
 </script>
    </td>
   </tr>
   <tr>
    <td valign="top" class="text" align="center">
      <input type="button" onClick="javascript:load(myChartId);" value="更换数据"/>
    </td>
   </tr>
  </table>
 </body>
</html>

为什么我用updateChartXML(strxml);   fusioncharts.js中会报错呢,我的fusioncharts.js文件是这样的(fusioncharts.js文件中的updateChartXML在最下面)

/***
 * FusionCharts: Flash Player detection and Chart embedding.
 * Version 1.2.3F ( 22 November 2008) - Specialized for FusionChartsFREE
 *      Checking Flash Version >=6 and added updateChartXML() for FREE Charts.
 * Version: 1.2.3 (1st September, 2008) - Added Fix for % and & characters, scaled dimensions, fixes in to properly handling of double quotes and single quotes in setDataXML() function.
 * Version: 1.2.2 (10th July, 2008) - Added Fix for % scaled dimensions, fixes in setDataXML() and setDataURL() functions
 * Version: 1.2.1 (21st December, 2007) - Added setting up Transparent/opaque mode: setTransparent() function
 * Version: 1.2 (1st November, 2007) - Added FORM fixes for IE
 * Version: 1.1 (29th June, 2007) - Added Player detection, New conditional fixes for IE
 *
 * Morphed from SWFObject (http://blog.deconcept.com/swfobject/) under MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 */
if(typeof infosoftglobal == "undefined") var infosoftglobal = new Object();
if(typeof infosoftglobal.FusionChartsUtil == "undefined") infosoftglobal.FusionChartsUtil = new Object();
infosoftglobal.FusionCharts = function(swf, id, w, h, debugMode, registerWithJS, c, scaleMode, lang, detectFlashVersion, autoInstallRedirect){
 if (!document.getElementById) { return; }
 
 //Flag to see whether data has been set initially
 this.initialDataSet = false;
 
 //Create container objects
 this.params = new Object();
 this.variables = new Object();
 this.attributes = new Array();
 
 //Set attributes for the SWF
 if(swf) { this.setAttribute('swf', swf); }
 if(id) { this.setAttribute('id', id); }

 w=w.toString().replace(/\%$/,"%25");
 if(w) { this.setAttribute('width', w); }
 h=h.toString().replace(/\%$/,"%25");
 if(h) { this.setAttribute('height', h); }

 
 //Set background color
 if(c) { this.addParam('bgcolor', c); }
 
 //Set Quality 
 this.addParam('quality', 'high');
 
 //Add scripting access parameter
 this.addParam('allowScriptAccess', 'always');
 
 //Pass width and height to be appended as chartWidth and chartHeight
 this.addVariable('chartWidth', w);
 this.addVariable('chartHeight', h);

 //Whether in debug mode
 debugMode = debugMode ? debugMode : 0;
 this.addVariable('debugMode', debugMode);
 //Pass DOM ID to Chart
 this.addVariable('DOMId', id);
 //Whether to registed with JavaScript
 registerWithJS = registerWithJS ? registerWithJS : 0;
 this.addVariable('registerWithJS', registerWithJS);
 
 //Scale Mode of chart
 scaleMode = scaleMode ? scaleMode : 'noScale';
 this.addVariable('scaleMode', scaleMode);
 
 //Application Message Language
 lang = lang ? lang : 'EN';
 this.addVariable('lang', lang);
 
 //Whether to auto detect and re-direct to Flash Player installation
 this.detectFlashVersion = detectFlashVersion?detectFlashVersion:1;
 this.autoInstallRedirect = autoInstallRedirect?autoInstallRedirect:1;
 
 //Ger Flash Player version
 this.installedVer = infosoftglobal.FusionChartsUtil.getPlayerVersion();
 
 if (!window.opera && document.all && this.installedVer.major > 7) {
  // Only add the onunload cleanup if the Flash Player version supports External Interface and we are in IE
  infosoftglobal.FusionCharts.doPrepUnload = true;
 }
}

infosoftglobal.FusionCharts.prototype = {
 setAttribute: function(name, value){
  this.attributes[name] = value;
 },
 getAttribute: function(name){
  return this.attributes[name];
 },
 addParam: function(name, value){
  this.params[name] = value;
 },
 getParams: function(){
  return this.params;
 },
 addVariable: function(name, value){
  this.variables[name] = value;
 },
 getVariable: function(name){
  return this.variables[name];
 },
 getVariables: function(){
  return this.variables;
 },
 getVariablePairs: function(){
  var variablePairs = new Array();
  var key;
  var variables = this.getVariables();
  for(key in variables){
   variablePairs.push(key +"="+ variables[key]);
  }
  return variablePairs;
 },
 getSWFHTML: function() {
  var swfNode = "";
  if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) {
   // netscape plugin architecture   
   swfNode = '<embed type="application/x-shockwave-flash" src="'+ this.getAttribute('swf') +'" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'"  ';
   swfNode += ' id="'+ this.getAttribute('id') +'" name="'+ this.getAttribute('id') +'" ';
   var params = this.getParams();
    for(var key in params){ swfNode += [key] +'="'+ params[key] +'" '; }
   var pairs = this.getVariablePairs().join("&");
    if (pairs.length > 0){ swfNode += 'flashvars="'+ pairs +'"'; }
   swfNode += '/>';
  } else { // PC IE   
   swfNode = '<object id="'+ this.getAttribute('id') +'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'">';
   swfNode += '<param name="movie" value="'+ this.getAttribute('swf') +'" />';
   var params = this.getParams();
   for(var key in params) {
    swfNode += '<param name="'+ key +'" value="'+ params[key] +'" />';
   }
   var pairs = this.getVariablePairs().join("&");   
   if(pairs.length > 0) {swfNode += '<param name="flashvars" value="'+ pairs +'" />';}
   swfNode += "</object>";
  }
  return swfNode;
 },
 setDataURL: function(strDataURL){
  //This method sets the data URL for the chart.
  //If being set initially
  if (this.initialDataSet==false){
   this.addVariable('dataURL',strDataURL);
   //Update flag
   this.initialDataSet = true;
  }else{
   //Else, we update the chart data using External Interface
   //Get reference to chart object
   var chartObj = infosoftglobal.FusionChartsUtil.getChartObject(this.getAttribute('id'));
   
   if (!chartObj.setDataURL)
   {
    __flash__addCallback(chartObj, "setDataURL");
   }
   
   chartObj.setDataURL(strDataURL);
  }
 },
 //This function :
 //fixes the double quoted attributes to single quotes
 //Encodes all quotes inside attribute values
 //Encodes % to %25 and & to %26;
 encodeDataXML: function(strDataXML){
  
   var regExpReservedCharacters=["\\$","\\+"];
   var arrDQAtt=strDataXML.match(/=\s*\".*?\"/g);
   if (arrDQAtt){
    for(var i=0;i<arrDQAtt.length;i++){
     var repStr=arrDQAtt[i].replace(/^=\s*\"|\"$/g,"");
     repStr=repStr.replace(/\'/g,"%26apos;");
     var strTo=strDataXML.indexOf(arrDQAtt[i]);
     var repStrr="='"+repStr+"'";
     var strStart=strDataXML.substring(0,strTo);
     var strEnd=strDataXML.substring(strTo+arrDQAtt[i].length);
     var strDataXML=strStart+repStrr+strEnd;
    }
   }
   
   strDataXML=strDataXML.replace(/\"/g,"%26quot;");
   strDataXML=strDataXML.replace(/%(?![\da-f]{2}|[\da-f]{4})/ig,"%25");
   strDataXML=strDataXML.replace(/\&/g,"%26");

   return strDataXML;

 },
 setDataXML: function(strDataXML){
  //If being set initially
  if (this.initialDataSet==false){
   //This method sets the data XML for the chart INITIALLY.
   this.addVariable('dataXML',this.encodeDataXML(strDataXML));
   //Update flag
   this.initialDataSet = true;
  }else{
   //Else, we update the chart data using External Interface
   //Get reference to chart object
   var chartObj = infosoftglobal.FusionChartsUtil.getChartObject(this.getAttribute('id'));
   chartObj.setDataXML(strDataXML);
  }
 },
 setTransparent: function(isTransparent){
  //Sets chart to transparent mode when isTransparent is true (default)
  //When no parameter is passed, we assume transparent to be true.
  if(typeof isTransparent=="undefined") {
   isTransparent=true;
  }   
  //Set the property
  if(isTransparent)
   this.addParam('WMode', 'transparent');
  else
   this.addParam('WMode', 'Opaque');
 },
 
 render: function(elementId){
  //First check for installed version of Flash Player - we need a minimum of 6
  if((this.detectFlashVersion==1) && (this.installedVer.major < 6)){
   if (this.autoInstallRedirect==1){
    //If we can auto redirect to install the player?
    var installationConfirm = window.confirm("You need Adobe Flash Player 6 (or above) to view the charts. It is a free and lightweight installation from Adobe.com. Please click on Ok to install the same.");
    if (installationConfirm){
     window.location = "http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash";
    }else{
     return false;
    }
   }else{
    //Else, do not take an action. It means the developer has specified a message in the DIV (and probably a link).
    //So, expect the developers to provide a course of way to their end users.
    //window.alert("You need Adobe Flash Player 8 (or above) to view the charts. It is a free and lightweight installation from Adobe.com. ");
    return false;
   }   
  }else{
   //Render the chart
   var n = (typeof elementId == 'string') ? document.getElementById(elementId) : elementId;
   n.innerHTML = this.getSWFHTML();
   
   //Added <FORM> compatibility
   //Check if it's added in Mozilla embed array or if already exits
   if(!document.embeds[this.getAttribute('id')] && !window[this.getAttribute('id')])
         window[this.getAttribute('id')]=document.getElementById(this.getAttribute('id'));
    //or else document.forms[formName/formIndex][chartId]   
   return true;  
  }
 }
}

/** ---- detection functions ---- */
infosoftglobal.FusionChartsUtil.getPlayerVersion = function(){
 var PlayerVersion = new infosoftglobal.PlayerVersion([0,0,0]);
 if(navigator.plugins && navigator.mimeTypes.length){
  var x = navigator.plugins["Shockwave Flash"];
  if(x && x.description) {
   PlayerVersion = new infosoftglobal.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split("."));
  }
 }else if (navigator.userAgent && navigator.userAgent.indexOf("Windows CE") >= 0){
  //If Windows CE
  var axo = 1;
  var counter = 3;
  while(axo) {
   try {
    counter++;
    axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+ counter);
    PlayerVersion = new infosoftglobal.PlayerVersion([counter,0,0]);
   } catch (e) {
    axo = null;
   }
  }
 } else {
  // Win IE (non mobile)
  // Do minor version lookup in IE, but avoid Flash Player 6 crashing issues
  try{
   var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
  }catch(e){
   try {
    var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
    PlayerVersion = new infosoftglobal.PlayerVersion([6,0,21]);
    axo.AllowScriptAccess = "always"; // error if player version < 6.0.47 (thanks to Michael Williams @ Adobe for this code)
   } catch(e) {
    if (PlayerVersion.major == 6) {
     return PlayerVersion;
    }
   }
   try {
    axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
   } catch(e) {}
  }
  if (axo != null) {
   PlayerVersion = new infosoftglobal.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));
  }
 }
 return PlayerVersion;
}
infosoftglobal.PlayerVersion = function(arrVersion){
 this.major = arrVersion[0] != null ? parseInt(arrVersion[0]) : 0;
 this.minor = arrVersion[1] != null ? parseInt(arrVersion[1]) : 0;
 this.rev = arrVersion[2] != null ? parseInt(arrVersion[2]) : 0;
}
// ------------ Fix for Out of Memory Bug in IE in FP9 ---------------//
/** Fix for video streaming bug */
infosoftglobal.FusionChartsUtil.cleanupSWFs = function() {
 var objects = document.getElementsByTagName("OBJECT");
 for (var i = objects.length - 1; i >= 0; i--) {
  objects[i].style.display = 'none';
  for (var x in objects[i]) {
   if (typeof objects[i][x] == 'function') {
    objects[i][x] = function(){};
   }
  }
 }
}
// Fixes bug in fp9
if (infosoftglobal.FusionCharts.doPrepUnload) {
 if (!infosoftglobal.unloadSet) {
  infosoftglobal.FusionChartsUtil.prepUnload = function() {
   __flash_unloadHandler = function(){};
   __flash_savedUnloadHandler = function(){};
   window.attachEvent("onunload", infosoftglobal.FusionChartsUtil.cleanupSWFs);
  }
  window.attachEvent("onbeforeunload", infosoftglobal.FusionChartsUtil.prepUnload);
  infosoftglobal.unloadSet = true;
 }
}
/** Add document.getElementById if needed (mobile IE < 5) */
if (!document.getElementById && document.all) { document.getElementById = function(id) { return document.all[id]; }}
/** Add Array.push if needed (ie5) */
if (Array.prototype.push == null) { Array.prototype.push = function(item) { this[this.length] = item; return this.length; }}

/** Function to return Flash Object from ID */
infosoftglobal.FusionChartsUtil.getChartObject = function(id)
{
  var chartRef=null;
  if (navigator.appName.indexOf("Microsoft Internet")==-1) {
    if (document.embeds && document.embeds[id])
      chartRef = document.embeds[id];
 else
 chartRef  = window.document[id];
  }
  else {
    chartRef = window[id];
  }
  if (!chartRef)
 chartRef  = document.getElementById(id);
 
  return chartRef;
}
/**
 Function to update chart's data at client side (FOR FusionCharts vFREE and 2.x
*/
infosoftglobal.FusionChartsUtil.updateChartXML = function(chartId, strXML){
 //Get reference to chart object    
 var chartObj = infosoftglobal.FusionChartsUtil.getChartObject(chartId);  
 //Set dataURL to null
 chartObj.SetVariable("_root.dataURL","");
 //Set the flag
 chartObj.SetVariable("_root.isNewData","1");
 //Set the actual data
 chartObj.SetVariable("_root.newData",strXML);
 //Go to the required frame
 chartObj.TGotoLabel("/", "JavaScriptHandler");
}


/** Aliases for easy usage */
var getChartFromId = infosoftglobal.FusionChartsUtil.getChartObject;
var updateChartXML = infosoftglobal.FusionChartsUtil.updateChartXML;
var FusionCharts = infosoftglobal.FusionCharts;

加载中
0
q
qiaozizhen

我已经解决了,但是只是机械的每隔几秒刷呢根线,我想要的是数据改变了再刷呢个线,哪位大侠指教一下谢谢

 

0
xmut
xmut
啥问题?
0
q
qiaozizhen
呵呵,我要做出类似于股市走势图呢种效果,现在的问题是我是用定时器每隔几秒刷新呢根曲线(不管数据有没有变化),我想要的是当数据改变了再刷,您有好的解决方法吗
0
l
libSpace
您好,我想请教一下,图例可以加点击事件,或者链接吗?就像link或者click一样
0
d
dreamweb

楼主,上面问题怎么解决的。

我加入

/** 
 Function to update chart's data at client side (FOR FusionCharts vFREE and 2.x 
*/  
infosoftglobal.FusionChartsUtil.updateChartXML = function(chartId, strXML){  
 //Get reference to chart object      
 var chartObj = infosoftglobal.FusionChartsUtil.getChartObject(chartId);    
 //Set dataURL to null  
 this.addVariable("_root.dataURL","");  
 //Set the flag  
 this.addVariable("_root.isNewData","1");  
 //Set the actual data  
 this.addVariable("_root.newData",strXML);  
 //Go to the required frame  
 chartObj.TGotoLabel("/", "JavaScriptHandler");   
}  




var updateChartXML = infosoftglobal.FusionChartsUtil.updateChartXML;
调用时也报错!!!!!!!!

返回顶部
顶部