使用jquery $ .get函数从服务器检索数据

时间:2012-12-17 22:56:57

标签: php javascript jquery postgresql flot

我正在使用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],[1355766602000,0],[1355766302000,0],[1355766002000,0],[1355765702000,0] [1355765402000,0],[1355765103000,2570.17],[1355764803000,2569.63]

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

1 个答案:

答案 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);
            }
        );
}