2012-12-17 49 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); 
      } 
     ); 
}