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;
        }
    }

}

最终效果:



原文地址:https://www.cnblogs.com/cache-yuan/p/9218448.html