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]、[13557202000,0]、[135576902000,0]、[1355766602000,0]、[1355766302000,0,0]、[13557600000,000]、[13550000]、[135576302000000]、 ,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 に答える