通过ajax绘制海图,而不是绘制海图

通过ajax绘制海图,而不是绘制海图,ajax,highcharts,Ajax,Highcharts,我尝试通过ajax获取系列和数据 函数检索Document.ready中的数据: function requestData() { $.ajax({ type: 'POST', dataType: 'json', url: xxxxx, async: false, // you can use an obje

我尝试通过ajax获取系列和数据 函数检索Document.ready中的数据:

   function requestData() {
            $.ajax({
                type: 'POST',
                dataType: 'json',
                url: xxxxx,
                async: false,
                // you can use an object here
                success: function(data) {
                    $("html").css('cursor','auto');
                    //remove previous data
                    while(chart.series.length > 0)
                        chart.series[0].remove(true);
                    $.each(data, function(val, text) {
                        counter = 0;
                        $.each(text, function() {
                            if (counter==0) {
                                datoscol=  "[" + this + "]";
                            }
                            else{
                                datoscol= datoscol + "," + "[" + this + "]";
                            }
                            counter=1
                        });

                        datoscol = "["+datoscol + "]";
                        alert (datoscol);
                        chart.addSeries({
                            name: val,
                            data: datoscol
                        });

                    });   
                    chart.redraw();
                },
                cache: false
            });
        }    
chart = new Highcharts.Chart({
        chart: {
            renderTo: 'container2',
            type: 'line',
            pointInterval: 30*24 * 3600 * 1000,
            events: {
                load: function(){
                    chart = this;
                    requestData();
                }
            }

        },

        title: {
            text: 'Facturación clínica'
        },
        credits: {
            enabled: false
        },
        xAxis: {
            type: 'datetime',
            maxZoom: 14 * 24 * 3600000, // fourteen days
            title: {
                text: null
            }
        },
        yAxis: {
            title: {
                text: 'Facturación (€)'
            }

        },
        tooltip: {
            formatter: function() {
                var s;
                if (this.point.name) { // the pie chart
                    s = ''+
                        this.point.name +': '+ this.y +' fruits';
                } else {
                    s = ''+
                        this.y + " Euros";
                }
                return s;
            }
        },
        labels: {
            items: [{
                    html: 'Facturación clínica',
                    style: {
                        left: '40px',
                        top: '8px',
                        color: 'black'
                    }
                }]
        }
    });
我还在document.ready中初始化Highcharts:

   function requestData() {
            $.ajax({
                type: 'POST',
                dataType: 'json',
                url: xxxxx,
                async: false,
                // you can use an object here
                success: function(data) {
                    $("html").css('cursor','auto');
                    //remove previous data
                    while(chart.series.length > 0)
                        chart.series[0].remove(true);
                    $.each(data, function(val, text) {
                        counter = 0;
                        $.each(text, function() {
                            if (counter==0) {
                                datoscol=  "[" + this + "]";
                            }
                            else{
                                datoscol= datoscol + "," + "[" + this + "]";
                            }
                            counter=1
                        });

                        datoscol = "["+datoscol + "]";
                        alert (datoscol);
                        chart.addSeries({
                            name: val,
                            data: datoscol
                        });

                    });   
                    chart.redraw();
                },
                cache: false
            });
        }    
chart = new Highcharts.Chart({
        chart: {
            renderTo: 'container2',
            type: 'line',
            pointInterval: 30*24 * 3600 * 1000,
            events: {
                load: function(){
                    chart = this;
                    requestData();
                }
            }

        },

        title: {
            text: 'Facturación clínica'
        },
        credits: {
            enabled: false
        },
        xAxis: {
            type: 'datetime',
            maxZoom: 14 * 24 * 3600000, // fourteen days
            title: {
                text: null
            }
        },
        yAxis: {
            title: {
                text: 'Facturación (€)'
            }

        },
        tooltip: {
            formatter: function() {
                var s;
                if (this.point.name) { // the pie chart
                    s = ''+
                        this.point.name +': '+ this.y +' fruits';
                } else {
                    s = ''+
                        this.y + " Euros";
                }
                return s;
            }
        },
        labels: {
            items: [{
                    html: 'Facturación clínica',
                    style: {
                        left: '40px',
                        top: '8px',
                        color: 'black'
                    }
                }]
        }
    });
我从服务器获取的数据类似于: {“雇员1”:[“1356908400000”,“10.00”],[“1359586800000”,“11.00”],[“1362006000000”,“12.00”],[“1364684400000”,“13.45”],“雇员2”:[“1356908400000”,“10.00”],[“1359586800000”,“11.00”],[“1362006000000”,“12.00”],[“1364684400000”,“13.45”]

因此,当我将序列添加到highcharts时,值是,例如: chart.addSeries({ 姓名:val,------------>员工1 数据:达托酚------->[“1356908400000”,“10.00”],[“1359586800000”,“11.00”],[“1362006000000”,“12.00”],[“1364684400000”,“13.45”]


通过firebug控制台,我没有收到任何错误,但除了轴和图例外,什么也没有出现。我得到了所有系列名称,但没有关于数据的任何信息,没有标记,没有线条。

您试图提供给Highcharts的数据(变量
datoscol
)是字符串。在您的情况下,必须提供一个对象,并且每个数组的内容也必须是数字

我认为,最好的方法是修复服务器响应

如果不能,那么简单、肮脏且潜在危险的方法是在向Highcharts提供变量时
eval
datoscol变量:

chart.addSeries({
    name: val,
    data: eval(datoscol)
});
看到它在运行

另一种方法是将每个数组元素转换为整数(日期时间)和浮点数(金额)。因此,您可以编写以下代码,而不是当前的
$

for (var seriesName in data) {
    var curData = data[seriesName];
    var curDataLen = curData.length;
    for (var i = 0; i < curDataLen; i++) {
        curData[i][0] = parseInt(curData[i][0], 10);
        curData[i][1] = parseFloat(curData[i][1]);
    }
    chart.addSeries({ name: seriesName, data: curData });
}
for(数据中的变量seriesName){
var curData=数据[序列名称];
var curDataLen=curData.length;
对于(变量i=0;i

看到它在运行。

像一个符咒一样工作:-)