有没有办法通过异步调用将外部数据加载到jqplot中?
我想要一个每分钟更新一次的实时图表,但是每次从服务器接收数据时都会使用async:false页面冻结。
答案 0 :(得分:4)
在示例中以这种方式完成的原因是为了简单起见。以下是this的异步返工:
var plot2 = null;
function fetchAjaxData(url, success) {
$.ajax({
url: url,
dataType:"json",
success: function(data) {
success(data);
console.log('loaded');
}
});
}
function createPlot(url) {
fetchAjaxData(url, function(data) {
if (plot2 == null) {
plot2 = $.jqplot('chart2', data, {
title: "AJAX JSON Data Renderer"
});
} else {
plot2.replot({data: data});
console.log('replotting');
}
});
}
$(document).ready(function(){
var jsonurl = "./jsondata.txt";
//Regenerate the plot on button click.
$('#ajax-button').click(function() {
createPlot(jsonurl);
});
//Generate the plot first time through.
createPlot(jsonurl);
});
使用HTML:
<div id="chart2" style="height:300px; width:500px;"></div>
<button id="ajax-button">Ajax retrieve</button>
所以这样做是异步获取数据并在Ajax调用成功时绘制它。为了简单起见,我只是重新加载相同的文本文件,尽管这可以很容易地适应您正在绘制实时数据流的场景。