jqplot外部数据与异步调用?

时间:2013-02-19 08:19:12

标签: ajax json asynchronous jqplot freeze


有没有办法通过异步调用将外部数据加载到jqplot中? 我想要一个每分钟更新一次的实时图表,但是每次从服务器接收数据时都会使用async:false页面冻结。

1 个答案:

答案 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调用成功时绘制它。为了简单起见,我只是重新加载相同的文本文件,尽管这可以很容易地适应您正在绘制实时数据流的场景。