Javascript 实时Flot图表不使用JSON
我使用此处给出的实时图形: 我试图用JSON文件中的输入值替换随机数学生成代码。它画了一张空白的图表。无法解决问题,因为它在逻辑上看起来是正确的。请帮忙 这是便签:Javascript 实时Flot图表不使用JSON,javascript,json,flot,real-time-updates,Javascript,Json,Flot,Real Time Updates,我使用此处给出的实时图形: 我试图用JSON文件中的输入值替换随机数学生成代码。它画了一张空白的图表。无法解决问题,因为它在逻辑上看起来是正确的。请帮忙 这是便签: <script type="text/javascript"> $(function() { var check; // We use an inline data source in the example, usually data would // be fetched from a serve
<script type="text/javascript">
$(function() {
var check;
// We use an inline data source in the example, usually data would
// be fetched from a server
var dat = [];
//totalPoints = 300;
function getRandomData() {
//alert("fff");
if (dat.length > 0)
dat = dat.slice(1);
// Do a random walk
//while (dat.length < totalPoints) {
//var prev = dat.length > 0 ? dat[dat.length - 1] : 50,
// y = prev + Math.random() * 10 - 5;
//if (y < 0) {
// y = 0;
//} else if (y > 100) {
// y = 100;
//}
//dat.push(y);
$.getJSON('data_3.json', function(data) {
alert(data+"i m here");
for (var i in data.nums) {
output = data.nums[i];
dat.push(output);
}
});
// Zip the generated y values with the x values
var res = [];
for (var i = 0; i < dat.length; ++i) {
res.push([i, dat[i]]);
}
return res;
}
// Set up the control widget
var updateInterval = 30;
$("#updateInterval").val(updateInterval).change(function () {
var v = $(this).val();
if (v && !isNaN(+v)) {
updateInterval = +v;
if (updateInterval < 1) {
updateInterval = 1;
} else if (updateInterval > 2000) {
updateInterval = 2000;
}
$(this).val("" + updateInterval);
}
});
var plot = $.plot("#placeholder", [ getRandomData() ], {
series: {
shadowSize: 0 // Drawing is faster without shadows
},
yaxis: {
min: 0,
max: 100
},
xaxis: {
show: false
}
});
function update() {
plot.setData([getRandomData()]);
// Since the axes don't change, we don't need to call plot.setupGrid()
plot.draw();
setTimeout(update, updateInterval);
}
update();
// Add the Flot version string to the footer
$("#footer").prepend("Flot " + $.plot.version + " – ");
});
</script>
我认为问题在于您异步获取数据,但是继续编写代码,就好像数据已经存在一样 当您进入
getRandomData
时,您将(几乎)删除所有点。然后使用$.getJSON
异步获取新数据。您尝试填充res
,但是$的结果可能还不存在
填充res
进行检查时插入断点/调试器
请不要通过删除此代码来清空dat
变量
if (dat.length > 0)
dat = dat.slice(1);
在提出新问题之前,请先搜索现有问题;这已经被问了好几次了。@DNS可能存在类似的问题,可能不是每次我接受你的建议并在“dat”数组和“res”数组中添加断点时都会遇到相同的问题。阵列仅同步填充。然而,我刚刚注意到我得到一个错误“$.plot不是一个函数”。对此我们能做些什么?这就是没有绘制图形的可能原因吗?您在flot之前添加了jQuery插件吗?如果不是,我相信你应该在flot插件之前添加。
if (dat.length > 0)
dat = dat.slice(1);