echarts+ajax+ashx+json调用数据库数据实现饼图和柱状图

实现方式:ajax+ashx+json

注意事项: 官网所需格式为   [{value:23,name:'xxxx' }]    请将key 的名字不要写错

具体代码,各位看官 请下移目光。

<!--请先引用文件-->
 <script src="../Scripts/jquery-1.8.2.min.js"></script>
    <script src="../Scripts/echarts/echarts.min.js"></script>
页面部分就设置一个div 就好了

<div><input type="button" id="btngo" value="Pie" /> </div>
    <div id="contanis" style="width:800px;height:800px"></div>
接下来就是js部分了  其实Echarts 跟HTML5中的 Canvans 还是有联系的 想知道的可以查资料哟

$("#btngo").click(function () { //这里用的是点击事件下面 当然这也是模仿你有条件查询的时候咯
            var dom = document.getElementById('contanis');
            var mycharts = echarts.init(dom);
            option = {
                title: {
                    text: '部门人口比例',
                    subtext: '测试数据',
                    x: 'center'
                },
                tooltip: {
                    trigger: 'item',
                    formatter: "{a} <br/>{b} : {c} ({d}%)"
                },
                legend: {
                    orient: 'vertical',
                    left: 'left',
                    data: []
                },
                series: [
                    {
                        name: '2012年度',
                        type: 'pie',
                        radius: '55%',
                        center: ['50%', '60%'],
                        data: [],
                        itemStyle: {
                            emphasis: {
                                shadowBlur: 10,
                                shadowOffsetX: 0,
                                shadowColor: 'rgba(0, 0, 0, 0.5)' //这怎么会有个.5呢? 看来还是要看看H5哟
                            }
                        }
                    }
                ]
            };
            mycharts.setOption(option);

接下来就是 ajax部分了 动态加载数据才是根本的 数据固定多没意思

$.ajax({
                type: "get",
                async: true,            //异步请求(同步请求将会锁住<a href="/projecteactual/web-server-browser-cache-1.html" class="keylink" title=" 浏览器的缓存原理及缓存方式" target="_blank">浏览器</a>,用户其他操作必须等待请求完成才可以执行)
                url: "../Handler/DepartmentHandler.ashx",   
                data: {},//demo 没加条件
                dataType: "json",        //返回数据形式为json
                success: function (result) {
                    for (var i = 0; i < result.length; i++)
                    {
                        name.push(result[i].name);                       
                    }                  
                    mycharts.setOption({ //加载数据<a href="/catalog.asp?tags=ECharts%E6%95%99%E7%A8%8B" class="keylink" title=" 图表" target="_blank">图表</a>
                        legend:{data:name },
                        series: [{
                            data:result
                        }]
                    });
 
                },
                    error: function (errorMsg) {
                        //请求失败时执行该函数
                        alert("图表请求数据失败!");
                        
                    }
 
            });

ashx部分就简单多了 单纯的序列化数据

DataTable result = BLL.Department.GetDeptNumber();         
            List<object> list = new List<object>();
            foreach (DataRow dr in result.Rows)
            {
            // 附上Echarts 所需的格式:[{value:335, name:'直接访问'}]
                Deart d = new Deart();
                d.value = Convert.ToInt32(dr["number"]);
                 //自己粗心 用values Echarts 不认 一直就是undefined
                d.name = dr["D_Name"].ToString();               
                list.Add(d);
            }
            JavaScriptSerializer jss = new JavaScriptSerializer();
            string json = jss.Serialize(list);
public class Deart   //其实可以不用这么定义  自己保险让它出来的 value 值为int
        {
            public int value { get; set; }
            public string name { get; set; }          
        }

 

柱状图:

环境:Echarts 3.19  vs2013 

实现方式:ajax+ashx+json

注意事项: 官网所需格式为:[5,6,7,9,34]   数组类型

<div>
         <%--按钮触发--%>
         <input type="button" id="btncanv" value="去吧 皮卡丘" />
     </div>
        <%--声明一个DIV 用来装Canvas绘制的图片--%>
    <div id="contanis" style="width:1000px;height:800px" >
        <script type="text/javascript">          
            $("#btncanv").click(function () {
                //获取到绘制dom
                var dom = document.getElementById("contanis");
                var myChart = echarts.init(dom);
                myChart.setOption({
                    title: {
                        text: '异步数据加载<a href="/catalog.asp?cate=2" class="keylink" title=" 示例" target="_blank">示例</a>' //图片标题
                    },
                    tooltip: {},
                    legend: {
                        data: ['部门人口'] 
                    },
                    xAxis: {
                        data: []
                    },
                    yAxis: {},
                    series: [{
                        name: '2015',
                        type: 'bar',//可以更改为 line(折线)
                        data: [] //此处给空 后面用ajax给他赋值
                    }]
                });

myChart.showLoading();    //数据加载完之前先显示一段简单的loading动画
                var names = [];    //类别数组(实际用来盛放X轴坐标值)
                var nums = [];    //销量数组(实际用来盛放Y坐标值)
                $.ajax({
                    type: "post",
                    async: true,            //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)
                    url: "../Handler/DepartmentHandler.ashx",    //请求发送到../Handler/DepartmentHandler处
                    data: {},
                    dataType: "json",        //返回数据形式为json
                    success: function (result) {                      
                        //请求成功时执行该函数内容,result即为服务器返回的json对象
                        if (result) {
                            for (var i = 0; i < result.length; i++) {
                                names.push(result[i].name);    //挨个取出类别并填入类别数组
                            }
                            for (var i = 0; i < result.length; i++) {
                                nums.push(result[i].values);    //挨个取出销量并填入销量数组
                            }
                            myChart.hideLoading();    //隐藏加载动画
                            myChart.setOption({        //加载数据图表
                               xAxis:{data: names},
                                series: [{ data: nums }]
                            });
                        }
                    },
                    error: function (errorMsg) {
                        //请求失败时执行该函数
                        alert("图表请求数据失败!");
                        myChart.hideLoading();
                    }
                })
            });
附上效果图吧:

 其实option的设置是可以放在ajax里面的 一样会出效果 而且容易更看 

就拿饼图来说吧 代码可以这么写啊

$.ajax({
                type: "get",
                async: true,            //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)
                url: "../Handler/DepartmentHandler.ashx",   
                data: {},//demo 没加条件
                dataType: "json",        //返回数据形式为json
                success: function (result) {                  for (var i = 0; i < result.length; i++)
                    {
                        name.push(result[i].name);                       
                    }
?option = {    title: {        text: '部门人口比例',        subtext: '测试数据',        x: 'center'    },    tooltip: {        trigger: 'item',        formatter: "{a} <br/>{b} : {c} ({d}%)"    },    legend: {        orient: 'vertical',        left: 'left',        data:name    },    series: [        {            name: '2012年度',            type: 'pie',            radius: '55%',            center: ['50%', '60%'],            data: result,            itemStyle: {                emphasis: {                    shadowBlur: 10,                    shadowOffsetX: 0,                    shadowColor: 'rgba(0, 0, 0, 0.5)'                }            }        }    ]};
 }, error: function (errorMsg) { //请求失败时执行该函数 alert("图表请求数据失败!"); } });

时间: 2024-09-22 00:49:01

echarts+ajax+ashx+json调用数据库数据实现饼图和柱状图的相关文章

jquery ajax,ashx,json的用法介绍

 本篇文章主要是对jquery ajax,ashx,json的用法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 jquery提供的简化版的ajax调用方法通常如下:    代码如下:     function post() {      $("#divWait").show();      $("#btnPost").attr("disabled", "disabled");      $.post(&q

如何使用ajax读取Json中的数据_AJAX相关

本文给大家分享一下,如何使用ajax读取Json中的数据. 一.基础知识 什么是json? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 * JSON 具有自我描述性,更易理解 JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台.JSON 解析器和 JSON 库支持许多不同的编程语言.JSON - 转换为 JavaScript 对象

如何使用ajax读取Json中的数据

本文给大家分享一下,如何使用ajax读取Json中的数据. 一.基础知识 什么是json? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 * JSON 具有自我描述性,更易理解 JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台.JSON 解析器和 JSON 库支持许多不同的编程语言. JSON - 转换为 JavaScript 对

用以下代码实现的三级联动下拉菜单[调用数据库数据],没有显示菜单内容,帮我看看是哪里出问题了?谢谢!

问题描述 用以下代码实现的三级联动下拉菜单[调用数据库数据],没有显示菜单内容,帮我看看是哪里出问题了?谢谢! 三个表: P_BigClass(字段:BigClassID,BigClassName,descid), P_SmallClass(字段:SmallClassID,BigClassName,SmallClassName,descid), P_Sales(字段:SalesID,SmallClassName,SalesName,descid) var arrSel=["BigClassNam

求助! 如何用JSP通过JDBC ODBC方式调用 数据库数据 然后拿出来 显示在手机屏幕上

问题描述 求助!如何用JSP通过JDBCODBC方式调用数据库数据然后拿出来显示在手机屏幕上

jquery ajax,ashx,json的用法总结_jquery

jquery提供的简化版的ajax调用方法通常如下: 复制代码 代码如下:     function post() {     $("#divWait").show();     $("#btnPost").attr("disabled", "disabled");     $.post("../PostIt.ashx",                     {                     

ASP+JS三级联动下拉菜单[调用数据库数据]_应用技巧

网上三级菜单多是多但是代码都比较烦,我这个应该说还是比较直观的:'肯定先要连接数据库了,不用说了 '数据库结构 '类别1表名称:a  字段:ID,Name  说明:ID为主键是类别1的ID值,Name为类别1的名称 '类别2表名称:aa  字段:ID,aID,Name  说明:ID为主键是类别2的ID值,aID为所属类别1的ID值,Name为类别2的名称 '类别3表名称:aaa  字段:ID,aID,aaID,Name  说明:ID为主键是类别3的ID值,aID为所属类别1的ID值,aaID为所

PHP读取目录下所有文件,并通过ajax返回json格式的数据

php <?php // header("content-type:application/json"); //header('Content-type: text/html; charset=utf-8'); $dir = "../Music"; $dh = opendir($dir); while (false !== ($filename = readdir($dh))) { if($filename!="."&&$f

ajax json 咋显示数据库 数据

问题描述 ajax json 咋显示数据库 数据 我要做个进入网站首页就用ajax json获取数据库数据,显示在页面上 前后台怎么写啊? 具体一点的 最好有代码例子= = 解决方案 后台查询数据库得到数据后转换成JSON返回给前台,前台直接显示. 解决方案二: <html xmlns="http://www.w3.org/1999/xhtml" > <head> ??? <title>Ajax&JQuery</title> &l