解决方案 »

  1.   

    楼主有例子么求发邮箱[email protected]
      

  2.   


    前台:$(document).ready(function() {
    var myChart1 = new FusionCharts("/js/FusionCharts/MSLine.swf", "myChartId", "500", "300", "0", "0");        myChart1.setDataURL("/xmlData/emperMonitorMSLine.xml");        myChart1.render("graphicsShowDataOne");

            
           
        //var myChart2 = new FusionCharts("/js/FusionCharts/RealTimeLine.swf", "myChartId2", "500", "300", "0", "0");
    //var url = "/xmlData/emperMonitorRealTimeLine.xml";
            //myChart2.setDataURL(url);
           // myChart2.render("graphicsShowDataTwo");
            getChartDate();
    }); function getChartObj(){
    var myChart2 = new FusionCharts("/js/FusionCharts/RealTimeLine.swf", "myChartId2", "550", "300", "0", "0");
    return myChart2;
    }


    function getChartDate(){
    var url = "/temperMonitor/temperMonitorAction!findRealTimeTemperMonitor.action";
    $.ajax({
                 type:"POST",
                 url:url,
                 success:function (data){
    var myChart = getChartObj();
             myChart.setDataXML(data);
             myChart.render("graphicsShowDataTwo");
                   }     
               }) ;       
    }第一步:
    你之前先通过实时的那个SWF先  展示出来了页面。获取了初始化的数据展示出来?初始化数据方法:
    public String findRealTimeTemperMonitor() {
    // 获取配置的实时刷新时间间隔时间
    String refresfInterval = PropertyUtils
    .getConfigParam("monitor.real.time");
    List<DataSet> dataSets = new ArrayList<DataSet>();
    DataSet dataSet1 = new DataSet("室内温度", "ff5904", "ff5904", "ff5904");
    DataSet dataSet2 = new DataSet("室外温度", "ffffff", "ffffff", "ffffff");
    dataSets.add(dataSet1);
    dataSets.add(dataSet2); if (null == refresfInterval) {
    refresfInterval = "6000";
    } String query_url = "/temperMonitor/temperMonitorAction!findRealTimeTemperMonitorData.action";
    StringBuffer buffer = new StringBuffer();
    buffer.append("<chart ");
    buffer.append("caption=\"室内外温度实时监控动态线性图\" ");
    buffer.append("yAxisName=\"温度值\" ");
    buffer.append("xAxisName=\"周期\" ");
    buffer.append("bgColor=\"000000\" "); // buffer.append("bgAlpha=\"100\" ");
    // buffer.append("showBorder=\"1\" ");
    // buffer.append("canvasBorderThickness=\"2\" ");
    // buffer.append("canvasBorderColor=\"008040\" ");
    // buffer.append("canvasBgColor=\"000000\" ");
    // buffer.append("numdivlines=\"16\" ");
    // buffer.append("numVDivLines=\"16\" ");
    // buffer.append("numDisplaySets=\"16\" ");
    // buffer.append("divLineColor=\"008040\" ");
    // buffer.append("vDivLineColor=\"008040\" ");
    // buffer.append("divLineAlpha=\"100\" ");
    // buffer.append("baseFontColor=\"00dd00\" ");
    // buffer.append("toolTipBgColor=\"000000\" ");
    // buffer.append("toolTipBorderColor=\"008040\" ");
    buffer.append("baseFontSize=\"11\" ");
    // buffer.append("showAlternateHGridColor=\"0\" ");
    // buffer.append("legendBgColor=\"000000\" ");
    // buffer.append("legendBorderColor=\"008040\" ");
    buffer.append("refreshInterval=\"" + refresfInterval + "\" ");
    buffer.append("dataStreamURL=\"" + query_url + "\" ");
    buffer.append("numberSuffix=\"℃\" ");
    buffer.append(">"); Map<String, Object> map = new HashMap<String, Object>();
    map.put("real_time", "true");
    // 获取数据库数据
    List<TemperMonitor> temperMonitors = this.temperMonitorService
    .findResultForPager(map);
    try {
    if (null != temperMonitors && temperMonitors.size() > 0) { buffer.append(" <categories>"); for (TemperMonitor temperMonitor : temperMonitors) {
    buffer.append("<category label=\""
    + temperMonitor.getMonitor_cycle() + "\" />");
    }
    buffer.append("</categories>"); buffer
    .append("<dataset seriesName=\"室内温度\" color=\"ff5904\" anchorBorderColor=\"ff5904\" anchorBgColor=\"ff5904\"> ");
    for (TemperMonitor temperMonitor : temperMonitors) {
    buffer.append("<set value=\""
    + temperMonitor.getIndoor_temperature() + "\"/>");
    }
    buffer.append("</dataset>"); buffer
    .append("<dataset seriesName=\"室外温度\" color=\"ffffff\" anchorBorderColor=\"ffffff\" anchorBgColor=\"ffffff\"> ");
    for (TemperMonitor temperMonitor : temperMonitors) {
    buffer.append("<set value=\""
    + temperMonitor.getOutdoor_temperature() + "\"/>");
    }
    buffer.append("</dataset>");
    }
    buffer.append("</chart>");
    } catch (Exception e) {
    e.printStackTrace();
    } System.out.println(buffer.toString());
    try {
    // Struts2Utils.getRequest().setCharacterEncoding("UTF-8");;
    HttpServletResponse response = Struts2Utils.getResponse();
    response.setCharacterEncoding("UTF-8");
    response.setContentType("text/html;charset=UTF-8"); response.getWriter().print(buffer.toString());
    } catch (Exception e) {
    e.printStackTrace();
    }
    return null;
    }第二步:
    你主要看看 实时的这个SWF文件 有几个重要的属性如:
    String query_url = "/temperMonitor/temperMonitorAction!findRealTimeTemperMonitorData.action";这个属性:
    refreshInterval = 是多久实时一次?
    dataStreamURL = 这个就是上面的url  是你实时的时候去请求的地址。
    下面是我实时获取数据的方法,就是上面url请求的方法public void findRealTimeTemperMonitorData() {
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("real_time_last", "true");
    List<TemperMonitor> temperMonitors = null;
    // 获取数据库数据
    try {
    temperMonitors = this.temperMonitorService.findResultForPager(map);
    } catch (Exception e) {
    e.printStackTrace();
    }
    StringBuffer buffer = new StringBuffer();
    if (null != temperMonitors && temperMonitors.size() > 0) {
    for (TemperMonitor temperMonitor : temperMonitors) {
    buffer.append("&lable=" + temperMonitor.getMonitor_cycle()
    + "&value=" + temperMonitor.getIndoor_temperature()
    + "|" + temperMonitor.getOutdoor_temperature());
    }
    } System.out.println(buffer.toString());
    try {
    HttpServletResponse response = Struts2Utils.getResponse();
    response.setCharacterEncoding("UTF-8");
    response.setContentType("text/html;charset=UTF-8");
    response.getWriter().print(buffer.toString());
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    下面这个 就是你要返回的数据的格式,
    buffer.append("&lable=" + temperMonitor.getMonitor_cycle()
    + "&value=" + temperMonitor.getIndoor_temperature()
    + "|" + temperMonitor.getOutdoor_temperature());
    最后返回回去就行了