第一次使用echart从后台获取数据动态显示到页面
2017-02-14 18:23
751 查看
第一次使用Echart绘制图表,看了两天,终于结合后台给整出来了。走过之后再看看,其实很简单的。不多说了,直接上图:
第一步:去echarts官方下载最新的js; 官方地址 :
echarts.baidu.com
我下的是3.4.0版的:echarts.min.js
第二步:创建一个ReportDataBean,在该类中设置两个属性:List<String>categories 和 List<Integer> data,具体如下图
ReportDataBean:用来记录和存储需要传递到前台页面中显示的数据集合
第三步:创建EchartReportService ,TestDataService,和各自实现。EchartReportService是所以对外调用的主Service,而TestDataService是具体的业务Service
1.EchartReportService:模板接口,用来以后进行不同模板间进行扩展
3.EchartReportServiceImpl
4.TestDataServiceImpl
第四步:testReport.jsp是具体显示统计图表的页面,里面有三个最重要的方法。这里只做最简单的实现
callbackFn方法是处理从后台获取的数据然后前台解析的。
initReport方法是初始化基本图标横轴和纵轴的方法。在这个方法里,只留有xAxis.data和series.data是动态从数据库获取后赋值的。
createTestReport方法是将callbackFn和initReport方法合并的入口方法。这样为以后可以在同一类型的图表显示模板进行编辑和处理进行扩充
testReport.jsp 代码如下:
注意事项及说明:
由于此功能是集成到其他功能上的,所以只进行了涉及到的基本的代码编写和上传。功能扩展和细节还不完善,只是做个引子抛砖引玉用
执行结果:
![](http://img.blog.csdn.net/20170214181051448?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3d3NTIwNTA3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
第一步:去echarts官方下载最新的js; 官方地址 :
echarts.baidu.com
我下的是3.4.0版的:echarts.min.js
第二步:创建一个ReportDataBean,在该类中设置两个属性:List<String>categories 和 List<Integer> data,具体如下图
ReportDataBean:用来记录和存储需要传递到前台页面中显示的数据集合
public class ReportDataBean { private List<String> categories; private List<Integer> data; public List<String> getCategories() { return categories; } public void setCategories(List<String> categories) { this.categories = categories; } public List<Integer> getData() { return data; } public void setData(List<Integer> data) { this.data = data; } }
第三步:创建EchartReportService ,TestDataService,和各自实现。EchartReportService是所以对外调用的主Service,而TestDataService是具体的业务Service
1.EchartReportService:模板接口,用来以后进行不同模板间进行扩展
public interface EchartReportService { public JSONObject getDataJson(); }2.TestDataService :具体实现数据实现接口,用来实现获取具体业务相关的数据,继承了EchartReportService
public interface TestDataService extends EchartReportService { }
3.EchartReportServiceImpl
@Service public class EchartReportServiceImpl implements EchartReportService { @Override public JSONObject getDataJson() { return null; } }
4.TestDataServiceImpl
@Service public class TestDataServiceImpl extends EchartReportServiceImpl implements TestDataService { /** * 模拟获取数据库后的数据 * @return */ @Override public JSONObject getDataJson() { ReportDataBean bean = new ReportDataBean(); List<String> categories = Arrays.asList("衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"); List<Integer> data = Arrays.asList(5, 20, 36, 10, 10, 20); bean.setCategories(categories); bean.setData(data); JSONObject jsonObj = (JSONObject) JSON.toJSON(bean); return jsonObj; } }
第四步:testReport.jsp是具体显示统计图表的页面,里面有三个最重要的方法。这里只做最简单的实现
callbackFn方法是处理从后台获取的数据然后前台解析的。
initReport方法是初始化基本图标横轴和纵轴的方法。在这个方法里,只留有xAxis.data和series.data是动态从数据库获取后赋值的。
createTestReport方法是将callbackFn和initReport方法合并的入口方法。这样为以后可以在同一类型的图表显示模板进行编辑和处理进行扩充
testReport.jsp 代码如下:
<#assign base=request.contextPath /> <!DOCTYPE html> <html> <head> <title>报表测试</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="renderer" content="webkit"> <meta name="keywords" content=""> <meta name="description" content=""> <link href="${base}/statics/css/bootstrap.min.css" rel="stylesheet"> <link href="${base}/statics/css/font-awesome.css?v=4.4.0" rel="stylesheet"> <link href="${base}/statics/css/animate.css" rel="stylesheet"> <link href="${base}/statics/css/style.css?v=4.1.0" rel="stylesheet"><base target="_blank"> <!-- jqgrid--> <link href="${base}/statics/css/plugins/jqgrid/ui.jqgrid.css" rel="stylesheet"> <style> /* Additional style to fix warning dialog position */ #alertmod_table_list_2 { top: 900px !important; } </style> </head> <body class="gray-bg"> <div class="wrapper wrapper-content animated fadeInRight"> <div class="row"> <div class="col-sm-12"> <div class="ibox "> <div class="ibox-title"> <h5>测试报表</h5> </div> <div class="ibox-content"> <div id="main" style="width: 600px;height:400px;"></div> </div> </div> </div> </div> </div> <script src="${base}/statics/js/jquery.min.js?v=2.1.4"></script> <script src="${base}/statics/js/bootstrap.min.js?v=3.3.6"></script> <script src="${base}/statics/js/plugins/layer/layer.min.js"></script> <script src="${base}/statics/js/demo/layer-demo.js"></script> <script src="${base}/statics/js/plugins/peity/jquery.peity.min.js" ></script> <script src="${base}/statics/js/plugins/jqgrid/i18n/grid.locale-cn.js" ></script> <script src="${base}/statics/js/plugins/jqgrid/jquery.jqGrid.min.js" ></script> <script src="${base}/statics/js/content.js" ></script> <script src="${base}/statics/js/jgrid/data.js"></script> <script src="${base}/statics/js/echarts/echarts.min.js"></script> <script type="text/javascript"> // 直接页面写的调用ajax的方法 function callbackFn(myChart,jsonURL){ $.ajax({ url:jsonURL, dataType:"json", success:function(jsonData){ myChart.setOption({ xAxis: { data: jsonData.categories }, series: [{ // 根据名字对应到相应的系列 name: '销量', data: jsonData.data }] }); // 设置加载等待隐藏 myChart.hideLoading(); } }); } // 初始化echar报表的方法 function initReport(myChart){ // 显示标题,图例和空的坐标轴 myChart.setOption({ title: { text: '异步数据加载示例' }, tooltip: {}, legend: { data:['销量'] }, xAxis: { data: [] }, yAxis: {}, series: [{ name: '销量', type: 'bar', data: [] }] }); } function createTestReport(showDivId,jsonURL){ var myChart = echarts.init(document.getElementById(showDivId)); // 初始化report对象 initReport(myChart); myChart.showLoading({text: '正在努力的读取数据中...' }); // 调用后台获取json数据 callbackFn(myChart,jsonURL); } </script> <script type="text/javascript"> $(document).ready(function(){ var showDivId = 'main'; var jsonURL = "${base}/report/v1/getTestReportJson.do"; createTestReport(showDivId,jsonURL); }); </script> </body> </html>
注意事项及说明:
由于此功能是集成到其他功能上的,所以只进行了涉及到的基本的代码编写和上传。功能扩展和细节还不完善,只是做个引子抛砖引玉用
执行结果:
相关文章推荐
- 第一次使用echart从后台获取数据动态显示到页面
- 使用echart从后台获取数据动态显示到页面
- ThinkPHP定时ajax获取后台数据,使用javascript动态修改前端页面的表格来显示数据
- FusionCharts动态获取后台json数据 页面显示
- 根据下拉值,使用ajax动态获取数据(在页面显示数据)
- 前台使用ajax动态获取数据并且显示在页面上,SSM框架二级联动
- ul中的li动态获取后台数据$.each()的使用方式
- Jquery 使用Ajax获取后台返回的Json数据后,页面处理
- 使用Ajax获取后台返回的Json数据后,页面处理
- JS使用ajax从xml文件动态获取数据显示的方法
- Jsp实现页面forEach循环遍历多条数据的显示和后台对应数据的获取(strurs1)实现
- Jquery 使用Ajax获取后台返回的Json数据后,页面处理
- 根据后台接口获取动态数据,使用JS拼接html
- [置顶] Echart动态获取数据库数据使用心得
- AJAX第五步:使用ajax解决页面首页显示后台数据的问题
- 再论百度Echarts技术,如何从后台获取数据并显示在页面上
- 使用JavaScript根据从后台获取来的数据打开一个新的页面
- ajax请求到后台数据,前台不用拼接字符串append追加HTML标签,使用空模板一样显示到页面
- [置顶] ajax请求到后台数据,前台不用拼接字符串append追加HTML标签,一样显示到页面 (使用空模板)
- [置顶] ajax请求得到后台数据,前台页面,使用table模板然后clone,显示表格,,不用append拼接 “字符串和HTML表格标签”