【问题标题】:JSON, Codeigniter, Highcharts and AJAXJSON、Codeigniter、Highcharts 和 AJAX
【发布时间】:2013-02-07 00:07:00
【问题描述】:

我正在使用 CI (+HMVC) 在表单上显示带有 ajax 事件的 Highcharts。

我的 pb 是为图表创建有效系列。我必须从 mysql DB 创建 6 个系列。我的图表代码的灵感来自 blank page highchart in using jquery to call json arrary.

我的观点 (<?=$instance_graph?> 无处不在,因为我希望能够实例化多个图表)

$(document).ready(function() {
    $('#submit<?=$instance_graph?>').click(function() {
        $('#rendu_graph<?=$instance_graph?>').html('');
        var form_data = {
        from : $('#from[name=from<?=$instance_graph?>]').val(),
        to : $('#to[name=to<?=$instance_graph?>]').val(),
        parametre : $('#parametre[name=parametres<?=$instance_graph?>]').val(),
        ajax : '1'
        };
        $.ajax({
            url: "<?= site_url('graph_meteo/ajax_graph'); ?>",
            type: 'POST',
            async : false,
            data: form_data,
            dataType:'json',
            success: function(data) {
            //alert(msg) ;
            //$('#rendu_graph<?=$instance_graph?>').html(msg);
            var chartSeriesData=[];
            $.each(data, function(i,item){
                var series_name = item.name;
                var series_data = item.data;     
                var series = {data: item.data,name:series_name};
                chartSeriesData.push(series);
            });
            console.log(chartSeriesData) ;
            chart = new Highcharts.Chart({ //Début du Highchar
            chart: {
                renderTo: 'rendu_graph<?=$instance_graph?>',
                type: 'spline'
            },
            title: {
                text: 'Graph' 
            },
            subtitle: {
                text: 'Title'
            },
            xAxis: {
                type: 'datetime'

            },
            yAxis: {
                title: {
                    text: 'param 1'
                }
            },
            tooltip: {
                formatter: function () {
                    return '<b>' + this.series.name + '</b><br/>' + Highcharts.dateFormat('%a %d %b %H:%M', this.x) + ': ' + this.y + ' m';
                }
            },

            series: chartSeriesData


        })

创建的系列的console.log:

[Object { data="[Date.UTC(2013,02,06,14,15),65.09375]",  name="Station 1"}, Object { data="[Date.UTC(2013,02,06,14,15),65.09375]",  name="Station 1"}, Object { data="[Date.UTC(2013,02,06,14,15),65.09375]",  name="Station 1"}, Object { data="[Date.UTC(2013,02,06,14,30),63.425]",  name="Station 1"}.

当然,我对每个对象都有一个系列,没有情节:

编辑:我正在寻找一种方法来使用这些数据(1 行)制作一个漂亮的工作图,并且我希望我的代码适用于许多行/系列。我的大 pb 是从查询结果开始到图表系列格式。一个例子可能是很好的答案。

希望你能在我发疯之前帮助我!

【问题讨论】:

  • 您在寻求什么帮助?你没有问问题
  • 你看!我开始生气了!我在第一篇文章的底部有真正的问题。

标签: javascript ajax json codeigniter highcharts


【解决方案1】:

您的设置的第一个问题是每个系列的数据都是一个包含数组的字符串。目前它看起来像:

{ data: "[Date.UTC(2013,02,06,14,15),65.09375]",  name: "Station 1"}

名称看起来不错,但数据应该是真正的 javascript 数组,而不是字符串。这是你想要的样子:

{ data: [Date.UTC(2013,02,06,14,15),65.09375],  name: "Station 1"}

当这个问题解决后,我认为您应该将所有数据点放在相同的系列定义中。所以而不是:

{ data: [Date.UTC(2013,02,06,14,15),65.09375],  name: "Station 1"},
{ data: [Date.UTC(2013,02,07,14,15),67.09375],  name: "Station 1"}

你应该有一个有很多点的系列:

{ data: [
      [Date.UTC(2013,02,06,14,15),65.09375],
      [Date.UTC(2013,02,07,14,15),67.09375],
      <more data points here>],
  name="Station 1"},

【讨论】:

  • 我完全同意,但我不知道如何用一个“名称”折叠所有点
  • 我认为您不应该首先为每个点创建单独的系列,如果您避免这样做,则无需将它们折叠回去。在您的代码中查看 $.each(data, function(i,item){ 的正文。您正在为每个点推送一个新的系列配置。
  • 好的,现在我有这样的东西:[{"name":"1","data":"[(2013,02,07, 19,00,00), 75.73125], [(2013,02,07, 06,45,00), 92.83125],... 但是当我用 $.each(data,function(key,value) {console.log(value) ; }); 我用逗号分隔每个数字!
猜你喜欢
  • 1970-01-01
  • 2010-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多