我正在使用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]
答案 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);
}
);
}