使用Highchart和ajax绘制动态系列和点

时间:2013-08-10 18:23:08

标签: javascript jquery ajax highcharts

我尝试从员工处获取几个系列的数据,并通过HighCharts绘制它们。 在用户点击之前我不知道公司,所以我得到了所有员工及其数据(点数)的ajax。

我有一个选择公司的选择框。完成后,我通过AJAX / jQuery调用服务器以获取添加到HighChart的数据:

    $("#company").change(function(){     
            $.ajax({
                type: 'POST',
                dataType: 'json',
                url: xxxxx,
                async: false,
                data: { company: company},
                success: function(data) {
                     $.each(data, function(val, text) {
                        alert (val);
                        alert (text);
                        chart2.addSeries({
                            name: val,
                            data: text
                        });
                    });   
                }
            ...

通过Firebug从服务器获取的数据是这样的:

{"Employee1":[["1356908400000","10.00"],["1359586800000","11.00"],  ["1362006000000","12.00"],["1364684400000","13.45"]],"Employee2":[["1356908400000","10.00"],["1359586800000","11.00"],["1362006000000","12.00"],["1364684400000","13.45"]]}

Employee1和Employee2应该是系列。 但是,当我调用addseries方法时,我收到此错误:

Uncaught Highcharts error #14: www.highcharts.com/errors/14 

似乎数据不喜欢Highcharts。 当我通过警报进行调试时,我得到了这个:

alert (val)->Employee1
alert (text)=1356908400000,10.00,1359586800000,11.00,1362006000000,12.00,1364684400000,13.45

当我放置没有ajax的数据时,这个例子工作正常。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我找到了答案: - )

text是一个数组,所以我需要另一个$ .each来读取它并格式化结果:

success: function(data) {
                    $("html").css('cursor','auto');
                    $.each(data, function(val, text) {
                        counter = 0;
                        $.each(text, function() {
                            if (counter==0) {
                                employee_data=  "[" + this + "]";
                            }
                            else{
                                employee_data= employee_data + "," + "[" + this + "]";
                            }
                            counter=1
                        });

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