在Real Time HighChart上使用XMLHttpRequest

时间:2014-02-27 15:08:25

标签: javascript jquery sql-server ajax highcharts

我正在编写Dynamic HighChart的修订版,它允许实时数据 (js fiddle example)。我希望能够在单独的页面上执行查询并通过XMLHttpRequest Ajax命令处理它。但是,我从未使用过此命令,也不了解如何将其合并到以下代码中:

        events : {
            load : function() {

                // set up the updating of the chart each second
                var series = this.series[0];
                setInterval(function() {
                    var x = (new Date()).getTime(), // current time

                    //y contains the next dynamic point
                    y = Math.round(Math.random() * 100);
                    series.addPoint([x, y], true, true);
                }, 1000);
            }
        }

那么,我如何将XMLHttpRequest合并到代码中?在等待SQL Server的响应时,它是否重叠?

1 个答案:

答案 0 :(得分:1)

如果你在"成功"中移动到setTimeout,你会变得更好。然后使用可以互相攻击的setIntervals调用ajax调用的处理程序。

// define your ajax function
// note I am using jquery's .ajax --> https://api.jquery.com/jQuery.ajax/
// it is just easier than writing your own cross browser XMLHttpRequest
ajaxCall =  function(){
    $.ajax({
        type: "POST",
        url: "some/URL",
        dataType: "json"
    })
    .done(function( rJson ) {
        var chart = Highcharts.charts[0];
        var series = chart.series[0];
        // do something to chart
        series.addPoint([rJson.x, rJson.y], true, true);
        // call this again when ajax call completes...
        setTimeout(ajaxCall, 1000);
    })
    .fail(function() {
        alert( "error" ); //do something if ajax fails
    })
}

现在在图表图表中加载回调让它滚动......

// Create the chart
$('#container').highcharts('StockChart', {
    chart : {
        events : {
            load : function() {
                setTimeout(ajaxCall, 1000);
            }
        }
    }
});