2012-12-17 80 views
0

我正在用flot庫創建一個實時圖並使用jquery $ .get函數。 我希望圖表每5秒更新一次檢索記錄的數據。 X軸處於時間模式。我一直在嘗試檢索必要的數據,但是我還無法得到它。 .php文件很好,因爲它連接到postgresql數據庫並將數據寫入請求的變量。 我認爲我的問題是在$ .get函數中。 你能幫我找到我的Javascript代碼是否好嗎? 預先感謝

<script type="text/javascript"> 
$(function() { 
var data=[]; 
    var data_inicial = []; 
    var data_actual = []; 
    var x; 
    var y; 

    function data_init() 
    { 
      $.get("param_pozos_linea1.php", function(data1) { x= data1; }); 
      data_inicial.push([x]); 
      return data_inicial; 
    } 

    function actualiza_data() 
    { 
      $.get("param_pozos_linea2.php", function(data2) { y= data2; }); 
      data_actual.push(y); 
      return data_actual; 
    } 

    // control de velocidad 
    var updateInterval = 500; 
    $("#updateInterval").val(updateInterval).change(function() { 
     var v = $(this).val(); 
     if (v && !isNaN(+v)) { 
      updateInterval = +v; 
      if (updateInterval < 1) 
       updateInterval = 1; 

      $(this).val("" + updateInterval); 
     } 
    }); 

    // setup plot 
    var options = { 
     series: { shadowSize: 0 }, // drawing is faster without shadows 
     yaxis: { min: 0, max: 100 }, 
     xaxis: { mode: "time",tickLength: 5, timeformat: "%d/%m - %h:%M %p"} 
    }; 
    var plot = $.plot($("#placeholder"), data_init() , options); 

    function update() { 
     plot.setData([ actualiza_data() ]); 
     plot.draw(); 

     setTimeout(update, updateInterval); 
    } 

    update(); 
}); 
</script> 

從 「param_pozos_linea1.php」 文件loooks這樣檢索到的數據:

[1355767803000,0],[1355767502000,0],[1355767202000,0],[1355766902000, 0],[1355766302000,0],[1355766302000,0],[1355766002000,0],[1355765702000,0],[1355765402000,0],[1355765103000,2570.17],[1355764803000,2569.63]

而且從「param_pozos_linea2.php」中檢索到的數據如下所示: [1355767803000,0]

+0

功能? –

回答

2

get請求是異步的,它不可能像你認爲的那樣以同步的方式工作。

function data_init() 
{ 
     $.get("param_pozos_linea1.php", function(data1) { x= data1; }); <-- calls the server asynchronously 
     data_inicial.push([x]); <-- is called before code is set on server, so it is setting it with what ever the last value was 
     return data_inicial; <-- returns something you do not want 
} 

你想要做的是調用設置所以請求的數據不裹一對容器的[]數據

function data_init() 
{ 
     $.get("param_pozos_linea1.php", 
      function(data1) { 
       data_inicial.push([data1]); 
       callYourPlotFunction(data_inicial); 
      } 
     ); 
}