2016-02-02 40 views
0

我的圖表在數據更新時以及將圖表下載到客戶端時凍結。以下是我的更新過程。FusionChart圖表更新凍結圖表

FusionCharts.setCurrentRenderer('JavaScript'); 
      FusionCharts.ready(function() { 
       var chart = new FusionCharts({ 
        type: "dragcolumn2d", 
        renderAt: "chartWeightAnalysis", 
        id: "dragChartId", 
        width: '100%', 
        height: '500', 
        dataSource: "compute/" +<?php echo  $_SESSION['MM_Username']; ?> + "renderChartDragColumn2d.xml", 
        dataFormat: "xmlurl", 
        events: { 
         'chartUpdated': function (evt, args) { 
          var diffWeight = args.startValue - args.endValue; 
          var resultXML = chart.getXMLData(); 
          var result = JSON.stringify(chart.getData());//        alert(chart.getData()); 
          var newString = jQuery.parseJSON(result); 
          var weightBox = []; 
          var sum = 0; 
          var resultBox = []; 
          var allDataBox = []; 
          jQuery.each(newString, function (key, value) { 
           if (key !== 0 && key !== args.dataIndex) { 
            weightBox.push(value[1]); 
            sum += value[1]; 
           } 
          }); 
          for (var key in weightBox) 
          { 
           var ratio = (weightBox[key] * diffWeight/sum); 
           var newValue = ratio + weightBox[key]; 
           resultBox.push(newValue); 
           allDataBox.push(weightBox[key], newValue); 
          } 
          var dataIndex = (args.dataIndex - 1) * 2; 
          allDataBox.splice(dataIndex, 0, args.startValue, args.endValue); 
          var matrix = listToMatrix(allDataBox, 2); 
          for (var key in matrix) { 
           resultXML = resultXML.replace('value="' + matrix[key][0] + '"', 'value="' + matrix[key][1] + '"'); 
          } 

          UpdateChart(chart, resultXML); 
         } 
        } 
       }).render(); 
      }); 
     } 

     function UpdateChart(chart, resultXML) { 
      chart.setXMLData(resultXML); 
     } 

a busy cat http://soft-touchdigital.com/images/errorChart.png

一旦呈現,它變得反應遲鈍。可能是什麼問題? 同樣將圖表導出到客戶端也會導致它同樣凍結。

+0

這是我們很難告訴你,此時圖表凍結。你也在使用JQuery。最好的選擇是對其進行調試並確定哪個進程將其中斷。也尋找錯誤。 – pallabB

+0

我該怎麼做? –

+0

通過您的瀏覽器開發者工具。對於Chrome,請查看此[link](https://developer.chrome.com/devtools/docs/javascript-debugging) – pallabB

回答

2

我找到了答案,我意識到錯誤是來自setChartData函數的一般情況,如果您使用不同的setChartData類型,它變得沒有響應。例如在我的代碼中,我用了datasouce:作爲url到XMLsetXMLUrl等價物),後來想用更新setXMLData又產生了一個錯誤。看看更新代碼;我使用ajax將更新的日期保存到相同的文件(重要!!!)。

  function UpdateChart(resultXML) { 
        $.ajax({ 
         type: "POST", 
         async: false, 
         url: "app_processor.php", 
         data: {action: "DragChartUpdate", getXMLData: resultXML}, 
         success: function (msg) { 
          if (msg !== 0) 
          { 
           chart.setXMLUrl("compute/" +<?php echo $_SESSION['MM_Username']; ?> + "renderChartColumn2d.xml"); 
          } 
         } 
        }); 

       } 
在我的PHP文件

function DragChartUpdate($getXMLData) { 
    if (isset($getXMLData)) { 
     file_put_contents("compute/" . $_SESSION['MM_Username'] . "renderChartColumn2d.xml", "<?xml version='1.0' encoding='utf-8'?>" . $getXMLData . ""); 
    } else { 
     file_put_contents("compute/" . $_SESSION['MM_Username'] . "renderChartColumn2d.xml", "<?xml version='1.0' encoding='utf-8'?>"); 
    } 
}