2015-06-20 64 views
1

我有兩個代碼,都生成折線圖。但是,第一個不使用mysql數據源,它使用隨機數學生成的數據點。但它使用刷新間隔,因此是活的。如何正確傳輸Javascript代碼?

第二個代碼實際上使用的是mysql數據源,並將數據顯示在我的數據庫的折線圖中。但它不是實時的,因爲它沒有刷新間隔功能。

我試圖將第一個代碼的refresh-Interval/chart-update代碼部分傳遞給我的第二個不活動但使用實際數據源的代碼。

這裏是我住的代碼,用隨機數據點:

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js">` 
    <script type="text/javascript"> 
     window.onload = function() { 

      var dps = []; // dataPoints 

      var chart = new CanvasJS.Chart("chartContainer2",{ 
       title :{ 
        text: "Patient #01" 
       },   
       data: [{ 
        type: "line", 
        dataPoints: dps 
       }] 
      }); 

      var xVal = 0; 
      var yVal = 100; 
      var updateInterval = 20; 
      var dataLength = 500; // number of dataPoints visible at any point 

      var updateChart = function (count) { 
       count = count || 1; 
       // count is number of times loop runs to generate random dataPoints. 

       for (var j = 0; j < count; j++) { 
        yVal = yVal + Math.round(5 + Math.random() *(-5-5)); 
        dps.push({ 
         x: xVal, 
         y: yVal 
        }); 
        xVal++; 
       }; 
       if (dps.length > dataLength) 
       { 
        dps.shift();     
       } 

       chart.render();  

      }; 

      // generates first set of dataPoints 
      updateChart(dataLength); 

      // update chart after specified time. 
      setInterval(function(){updateChart()}, updateInterval); 

     } 

    </script> 

這是我的靜線圖的代碼(非實時),但是使用真實的數據源:

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js">` 
</script> 
    <script type="text/javascript"> 

        $().ready(function() { 

        $.getJSON("arduino_data.php", function (result) { 

        var dataPoints = []; 

        for (var i = 0; i <= result.length - 1; i++) { 
        dataPoints.push({ x: Number(result[i].x), y: Number(result[i].y) }); 
        } 

        var chart = new CanvasJS.Chart("chartContainer",{ 
       title :{ 
        text: "Patient #01" 
       },   
       data: [{ 
        type: "line", 
        dataPoints: dataPoints 
       }] 
      }); 

        chart.render(); 
        }); 

      }); 
    </script> 
    <script type="text/javascript" src="canvasjs.min.js"></script> 

這是我到目前爲止所嘗試過的:

<html> 
<head> 

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"> </script> 
<script type="text/javascript"> 

       $().ready(function() { 

        $.getJSON("arduino_data.php", function (result) { 

       var chart = new CanvasJS.Chart("chartContainer",{ 
       title :{ 
       text: "Patient #01" 
       },   
       data: [{ 
       type: "line", 
       dataPoints: dataPoints 
       }] 
       }); 

       var dataPoints = []; 
       var updateInterval = 20; 
       var dataLength = 500; // number of dataPoints visible at any point 

       var updateChart = function (count) { 
          count = count || 1; 

       for (var i = 0; i <= result.length - 1; i++) { 
       dataPoints.push({ x: Number(result[i].x), y: Number(result[i].y) }); 
       }; 

       } 
       if (dataPoints.length > dataLength) 
       { 
       dataPoints.shift();    
       } 

       chart.render();  

     )}; 

     // generates first set of dataPoints 
     updateChart(dataLength); 

     // update chart after specified time. 
     setInterval(function(){updateChart()}, updateInterval); 


     } 




</script> 
<script type="text/javascript" src="canvasjs.min.js"></script> 
</head> 
<body> 
    <div id="chartContainer" style="height: 300px; width:100%;"> 
    </div> 
</body> 
</html> 

但它口口聲聲說

Unexpected token ')' at line 42

  chart.render();  

    )}; 

我很尷尬,但我不能找到解決辦法,由於所有的手鐲/ parenthesizes。我已經嘗試了一切。與)和沒有}但似乎沒有提供。

如果解決了,代碼的年代位置會好嗎?

編輯:第一個問題解決了,新的問題:JS定位

<!DOCTYPE HTML> 
<html> 
<head> 

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"> </script> 
<script type="text/javascript"> 

       $().ready(function() { 

        $.getJSON("arduino_data.php", function (result) { 

       var chart = new CanvasJS.Chart("chartContainer",{ 
       title :{ 
       text: "Patient #01" 
       },   
       data: [{ 
       type: "line", 
       dataPoints: dataPoints 
       }] 
       }); 

       var dataPoints = []; 
       var updateInterval = 20; 
       var dataLength = 500; // number of dataPoints visible at any point 

       var updateChart = function (count) { 
          count = count || 1; 

       for (var i = 0; i <= result.length - 1; i++) { 
       dataPoints.push({ x: Number(result[i].x), y: Number(result[i].y) }); 
       }; 

       } 
       if (dataPoints.length > dataLength) 
       { 
       dataPoints.shift();    
       } 

       chart.render();  

       }); 

     // generates first set of dataPoints 
     updateChart(dataLength); 

     // update chart after specified time. 
     setInterval(updateChart, updateInterval); 


     }); 




</script> 
<script type="text/javascript" src="canvasjs.min.js"></script> 
</head> 
<body> 
    <div id="chartContainer" style="height: 300px; width:100%;"> 
    </div> 
</body> 
</html> 

輸出:

Can't find variable: updateChart

+0

你說你不能找到行42?如果你正確縮進你的JS,即使在記事本中,這些錯誤也是微不足道的。 –

+0

對不起,我應該更清楚,第42行是在:chart.render(); \t)};無論我在那裏改變,它都不起作用 –

+1

'chart.render(); )};'last應該是'});'和'setInterval();'應該有相同的'});' –

回答

1

您使用)};代替});

也是在你的JS結束你只用}而不是});

還打電話給你的圖表一樣

setInterval(updateChart, updateInterval); 

,並確保您的updateInterval是正確的功能範圍。
這是它應該大致是這樣的:

jQuery(function ($) { 

    function updateChart(result) { // move it here!!! 
     $.getJSON("arduino_data.php", function(result){ 
      var dataPoints = []; 
      var dataLength = 500; // number of dataPoints visible at any point 
      var updateInterval = 1000; 
      var chart = new CanvasJS.Chart("chartContainer",{ // new chart Object 
       title :{ 
        text: "Patient #01" 
       },   
       data: [{ 
        type: "line", 
        dataPoints: dataPoints 
       }] 
      }); 
      for (var i = 0; i <= result.length - 1; i++) { 
       dataPoints.push({ x: Number(result[i].x), y: Number(result[i].y) }); 
      } 
      if (dataPoints.length > dataLength){ 
       dataPoints.shift();    
      }   
      chart.render(); 
     }); 
    } 


    // First read - Start 
    updateChart(); 
    // Update chart after specified time. 
    setInterval(updateChart, updateInterval); 

}); 
+0

謝謝,它的工作。我一直在看它太長,以監督這一點。它現在說:謝謝它的工作。但現在它說(我害怕由於定位):ReferenceError:無法找到變量:updateChart這是我的主要問題實際上,因爲我是新來的JavaScript。我注意到,定位是相當重要的JS –

+1

@MieerDarwesh哦,是的,因爲你需要創建你的功能超出了你的範圍getJson –

+0

謝謝,我會研究:) –