javascript - 如何使用ajax json制作morris donut chart ?

标签 javascript jquery json ajax donut-chart

如何使用ajax json制作morris donut chart ?

这是我的代码:

$(function() {

$.ajax({
    url : 'dashboard/total-data',    
}).done(function(data){
    initDonut(JSON.parse(data));
    console.log(data);
}).fail(function(){

});

var initDonut = function(data){

    return Morris.Donut({
        element: 'morris-donut-chart',
        data: [ data ],
        // data: [ 
                // {label: "BMW", value: 4},
                // {label: "Mercy", value: 0},
                // {label: "Ferrari", value: 0},
                // {label: "Toyota", value: 3},
                // {label: "Porsche", value: 0},
                // {label: "Limosin", value: 0},
                // {label: "Lamborgini", value: 3} ],
        resize: true,
        colors: ['#87d6c6', '#54cdb4','#1ab394', '#54cdb4','#1ab394', '#54cdb4','#1ab394'],
    });

} });

上面的Ajax代码返回的数据格式如下:

{"BMW":4,"Mercy":0,"Ferrari":0,"Toyota":3,"Porsche":0,"Limosin":0,"Lamborgini":3}

我的问题

如何用javascript让上面的格式数据变成这样?

[ {label: "BMW", value: 4},{label: "Mercy", value: 0},{label: "Ferrari", value: 0},{label: "Toyota", value: 3},{label: "Porsche", value: 0},{label: "Limosin", value: 0},{label: "Lamborgini", value: 3} ]

这是显示 json 的代码:

public function total_data()
{
    $data['BMW']        = $this->m_dashboard->get_total_product_bmw();
    $data['Mercy']      = $this->m_dashboard->get_total_product_mercy();
    echo json_encode($data);
    $data['Ferrari']    = $this->m_dashboard->get_total_product_ferrari();
    $data['Toyota']     = $this->m_dashboard->get_total_product_toyota();
    $data['Porsche']    = $this->m_dashboard->get_total_product_porsche();
    $data['Limosin']    = $this->m_dashboard->get_total_product_limosin();
    $data['Lamborgini'] = $this->m_dashboard->get_total_product_lamborgini();
    echo json_encode($data);
}

最佳答案

您需要更改total-data的代码,如下所示:-

public function total_data()
{
    $data[0]['label']= 'BMW'; 
    $data[0]['value']= $this->m_dashboard->get_total_product_bmw();

    $data[1]['label']= 'Mercy'; 
    $data[1]['value']= $this->m_dashboard->get_total_product_mercy();


    $data[2]['label']= 'Ferrari'; 
    $data[2]['value']=  $this->m_dashboard->get_total_product_ferrari();

    $data[3]['label']= 'Toyota'; 
    $data[3]['value']=  $this->m_dashboard->get_total_product_toyota();

    $data[4]['label']= 'Porsche'; 
    $data[4]['value']=  $this->m_dashboard->get_total_product_porsche();

    $data[5]['label']= 'Limosin'; 
    $data[5]['value']=  $this->m_dashboard->get_total_product_limosin();

    $data[6]['label']= 'Lamborgini'; 
    $data[6]['value']=  $this->m_dashboard->get_total_product_lamborgini();

    echo json_encode($data);
}

jQuery 代码需要是:-

$(function() {

    $.ajax({
        url : 'dashboard/total-data',    
    }).done(function(data){
        Morris.Donut({
          element: 'morris-donut-chart',
          data: JSON.parse(data),
           resize: true,
           colors: ['#87d6c6', '#54cdb4','#1ab394', '#54cdb4','#1ab394', '#54cdb4','#1ab394']
        });

    }).fail(function(){

    });
});

在我这边工作:- http://prntscr.com/f6399z

关于javascript - 如何使用ajax json制作morris donut chart ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43884838/

相关文章:

javascript - 我如何正确处理错误并防止显示文件夹目录

javascript - Vue.js - 无法使用 vue-resource 加载 json 数据

javascript - 我可以一次性将其转换为长度吗?

javascript - 如何隐藏highcharts实体仪表图的中间值?

javascript - 有没有什么功能可以从脚本标签中获取所有大小?

javascript - Webpack - 当导入未定义/未声明时发出警告

javascript - 如何在jquery中引用新添加的元素并设置CSS样式

javascript - 在第一次页面加载时设置 cookie

jquery - 如何从下拉列表中获取未选中的索引?

java - 在java中解析嵌套的json数组