JQPlot auto refresh chart with dynamic ajax data

后端 未结 2 1297
猫巷女王i
猫巷女王i 2020-12-06 02:39

I want to update the chart drawn by jqPlot sequentially in time intervals.

My use case is such that the AJAX call returns only a single value. For e.g.:



        
2条回答
  •  心在旅途
    2020-12-06 03:28

    You will need to store the data in an array then push new data to the array within each ajax call.

    Here is a simple demo using a button to start the AJAX updates on a 3 second interval:

    /* store empty array or array of original data to plot on page load */
    
    var storedData = [3, 7];
    
    /* initialize plot*/
    
    var plot1;
    renderGraph();
    
    $('button').click( function(){
        doUpdate();
        $(this).hide();
    });
    
    function renderGraph() {
        if (plot1) {
            plot1.destroy();
        }
        plot1 = $.jqplot('chart1', [storedData]);
    }
    /* sample data for demo*/   
    var newData = [9, 1, 4, 6, 8, 2, 5];
    
    
    function doUpdate() {
        if (newData.length) {
            /* used to pull new number from sample data for demo*/
            var val = newData.shift();
    
            $.post('/echo/html/', {
                html: val
            }, function(response) {
                var newVal = new Number(response); /* update storedData array*/
                storedData.push(newVal);
                renderGraph();               
                setTimeout(doUpdate, 3000)
            })
    
        } else {
            alert("All Done")
        }
    }
    

    DEMO: http://jsfiddle.net/ZqCXP/

提交回复
热议问题