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”文件中检索到的数据如下所示:

[1355767803000,0],[1355767502000,0],[1355767202000,0],[1355766902000,0],[13557666602000,0] ,0],[1355765103000,2570.17],[1355764803000,2569.63]

从“param_pozos_linea2.php”检索到的数据如下所示:[1355767803000,0]

4

1 回答 1

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);
            }
        );
}
于 2012-12-17T23:21:29.917 回答