EChats结合PHP,MYSQL,利用ajax动态数据添加。

       用过echarts的人对于它的亮点我就不多说啦,下面我就分享一下我最近发现的一些小想法吧。

      1、 我首先建立VisualService.php用来对数据的操作。

      源代码:
<?php
 require_once 'SQLHelper.php';
     $str=$_POST['name'];
    if($str=="Pie"){
        $help=new SQLHelper() ;
         $sql="select name,value from Pie";
         $result=$help->execute_dql($sql);
         $result=json_encode($result);
         echo $result;
     }
     else if($str=="Bar"){
     $help=new SQLHelper();
     $sql="select year,guangdong,jiangsu,shandong from bar";
     $result=$help->execute_dql($sql);
     $result=json_encode($result);
     echo $result;
}else {
    echo "程序执行完毕";
}

?>
先将数据从数据库里面取出来,然后转化为json格式,传到前台。SQLHelper()是我自己封装的一个对数据库执行的类,可以用我们平时用的Mysql数据库操作语言代替。下面我们来看看前台代码。

 var fileLocation = '../echarts/echarts-map';
    require.config({
        paths:{
            'echarts': fileLocation,
            'echarts/chart/line': fileLocation,
            'echarts/chart/bar': fileLocation,
            'echarts/chart/scatter': fileLocation,
            'echarts/chart/k': fileLocation,
            'echarts/chart/pie': fileLocation,
            'echarts/chart/radar': fileLocation,
            'echarts/chart/map': fileLocation,
            'echarts/chart/chord': fileLocation,
            'echarts/chart/force': fileLocation,
            'echarts/chart/gauge': fileLocation,
            'echarts/chart/funnel': fileLocation,
            'echarts/config': fileLocation
        }
    });
    $.ajax({
           type: "POST",
           url: "http://localhost/Visual/Visual/VisualService.php",
           data: "name=Pie",
           dataType:"json",
           success: function(msg)
{------------------------------------------------ajax返回的一个JSON数据对象,paths,require是ecahrts的模块加载。
            require(
                    [
                        'echarts',
                        'echarts/chart/line',
                        'echarts/chart/bar',
                        'echarts/chart/scatter',
                        'echarts/chart/k',
                        'echarts/chart/pie',
                        'echarts/chart/radar',
                        'echarts/chart/force',
                        'echarts/chart/chord',
                        'echarts/chart/gauge',
                        'echarts/chart/funnel',
                        'echarts/config'
                    ],
                    function (ec) {
                        //--- 折柱 ---
                        var myChart = ec.init(document.getElementById('main'));                        
                        option = {
                                title : {
                                    text: '某站点用户访问来源',
                                    subtext: '纯属虚构',
                                    x:'center'
                                },
                                tooltip : {
                                    trigger: 'item',
                                    formatter: "{a} <br/>{b} : {c} ({d}%)"
                                },
                                legend: {
                                    orient : 'vertical',
                                    x : 'left',
                                    data:function(){-----

该数据是从JSon数组里面提取出来,通过后台返回的msg数组将其取出,然后放入一个数组中,再返回给data,值得一提的是,请记住方法的最后必须得有()不然,图是出不来的。具体什么原因,我也在探索中哦,希望会的朋友也多想想。
                                        var arr=new Array();
                                        for(var i=0;i<msg.length;i++){
                                            arr.push(msg[i].name);
                                        }
                                        return arr;
                                    }()

                                },
                                toolbox: {
                                    show : true,
                                    feature : {
                                        mark : {show: true},
                                        dataView : {show: true, readOnly: false},
                                        restore : {show: true},
                                        saveAsImage : {show: true}
                                    }
                                },
                                calculable : true,
                                series : [
                                    {
                                        name:'产业结果',
                                        type:'pie',
                                        radius : '55%',
                                        center: ['50%', '60%'],
                                        data:function(){
                                            var arr=[];
                                            for(var i=0;i<msg.length;i++)
                                                {
                                                    arr.push({
                                                        name:msg[i].name,
                                                        value:msg[i].value
                                                    });
                                                }
                                            return arr;
                                        }()

                                    }
                                ]
                            };
                                                

                        myChart.setOption(option);
                    }
            );
           }
        });
</script>

总结:echarts的数据显示差不多都是用数组的形式去赋值。所以,我们如果进行从数据库中动态将数据赋入echarts,可以以这样的形式哦:

data:function(){

var arr=new Array();

........

return arr;

}以函数的形式给data赋值。另外,echarts里面采用DOM结构,如果需要寻找某些元素的话可以想JS那样去找:option.series[0].name;

谢谢观看,有什么大家一起研究研究。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值