• C#曲线分析平台的制作(二,echarts前后台数据显示)


    在上一篇博客中,学习了使用javascript和jquery两种方法来进行前后台交互。本篇博客着重利用jquery+echarts来实现从后台取数,从前端echarts中展示。

    1.html页面编写:

    a.echarts.js导入,jquery框架导入。

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <script src="Scripts/echart/echarts.js"></script>
        <script src="Scripts/jquery-3.3.1.min.js"></script>
        <script src="Scripts/echart/macarons.js"></script>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
       
        <title>echart demo to ajax+json</title>
    </head>

    b.echarts+ajax脚本编写:

    <body>
        <div id="main" style=" 600px;height:400px;"></div>
        <script type="text/javascript">
        var mychart = echarts.init(document.getElementById('main'), 'macarons');
        mychart.setOption({
            title: {
                text: '异步加载数据示例'
            },
            tooltip: {},
            legend: {
                data: ['销量']
            },
            xAxis: {
                data: []
            },
            yAxis: {},
            series: [{
                name: '销量',
                type: 'bar',
                data: []
            }]
        });
        mychart.showLoading();
        var names =[];    //类别数组(实际用来盛放X轴坐标值)
        var nums = [];    //销量数组(实际用来盛放Y坐标值)
    
        $.ajax({
            type: "post",
            async: true,            //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)
            url: "index.aspx?method=getdata",
            //url:"Handler.ashx?method=getdata",
            data: {},
            dataType: "json",        //返回数据形式为json
            success: function (result) {
                //请求成功时执行该函数内容,result即为服务器返回的json对象
               if (result) {
                   //var json = $.parseJSON(result);
                   alert(result);
                  
                   for (var i = 0; i < result.length; i++) {
                        //alert(result[i].name);
                       names.push(result[i].names);    //挨个取出类别并填入类别数组
                      
                    }
                    for (var i = 0; i < result.length; i++) {
                       nums.push(result[i].nums);    //挨个取出销量并填入销量数组
                    }
                    mychart.hideLoading();    //隐藏加载动画
                    mychart.setOption({        //加载数据图表
                        xAxis: {
                            data: names
                        },
                        series: [{
                            // 根据名字对应到相应的系列
                            name: '销量',
                            data: nums
                        }]
                    });
    
                }
    
            },
            error: function (errorMsg) {
                //请求失败时执行该函数
                alert("图表请求数据失败!");
                myChart.hideLoading();
            }
            })
        </script>

    2.后台脚本编写(有两种方法:一种使用aspx后台脚本,一种使用一般处理程序ashx)

    2.1利用aspx后台脚本:(使用Newtonsoft.dll的jsonconvert方法转换为json字符串)

    public partial class index : System.Web.UI.Page
    {
        List<object> lists = new List<object>();
        string result = "";
        protected void Page_Load(object sender, EventArgs e)
        {
            
            string method = Request.QueryString["method"];
            if (!string.IsNullOrEmpty(method))
            {
                if (method == "getdata")
                {
                    data();
                }
            }
        }
        private void data()
        {
          
            lists = new List<object>();
    
            var obj = new { names = "yuan", nums = 12 };
            var obj1 = new { names = "yuan1", nums = 19 };
            lists.Add(obj);
            lists.Add(obj1);
            object JSONObj = (Object)JsonConvert.SerializeObject(lists);
            Response.Write(JSONObj);
          //  一定要加,不然前端接收失败
            Response.End();
        }

    2.2利用ashx:(利用javascriptSerializer进行序列化传输)

    public class Handler : IHttpHandler {
        JavaScriptSerializer jsS = new JavaScriptSerializer();
        List<object> lists = new List<object>();
        string result = "";
        
        public void ProcessRequest (HttpContext context) {
            context.Response.ContentType = "text/plain";
    
            string method = context.Request["method"];
            if (!string.IsNullOrEmpty(method))
            {
                if (method == "getdata")
                {
                    lists = new List<object>();
                   
                        var obj = new { names = "yuan", nums =12  };
                        var obj1 = new { names = "yuan1", nums = 19 };
                        lists.Add(obj);
                        lists.Add(obj1);
                    
    
                    jsS = new JavaScriptSerializer();
                    result = jsS.Serialize(lists);
                    context.Response.Write(result);
                }
            }
            //context.Response.Write("Hello World");
        }
     
        public bool IsReusable {
            get {
                return false;
            }
        }
    
    }

    最终效果:



  • 相关阅读:
    [iOS UI进阶
    [iOS UI进阶
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    为什么会使用内部临时表
    Django日志模块配置
    mysql join语句分析(一)
    mysql误删数据以及kill语句工作原理
  • 原文地址:https://www.cnblogs.com/cache-yuan/p/9218448.html
Copyright © 2020-2023  润新知