echar1.jsp 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  4. <%-- <%
  5. if(request.getSession().getAttribute("user")==null){
  6. response.sendRedirect("main.jsp");
  7. }
  8. %> --%>
  9. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  10. <html>
  11. <head>
  12. <link rel="stylesheet" href="css/echart.css" type="text/css" media="screen" />
  13. <link rel="stylesheet" href="css/bootstrap.min.css" type="text/css" media="screen" />
  14. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  15. <title>统计图</title>
  16. <script src="js/jquery.min.js"></script>
  17. <script src="js/echarts.js"></script>
  18. <script src="js/highcharts/highcharts.js"></script>
  19. <script src="js/highcharts/highcharts-more.js"></script>
  20. <script src="js/highcharts/modules/exporting.js"></script>
  21. <script src="js/highcharts/modules/map.js"></script>
  22. <script src="https://data.jianshukeji.com/geochina/guangdong.js"></script>
  23. </head>
  24. <style>
  25. body{
  26. background-image:url(images/bg4.png);
  27. background-size: cover;
  28. position: absolute;
  29. }
  30. </style>
  31. <body style:"text-align:center;" οnlοad="loadData()">
  32. <!-- 画图 -->
  33. <!--头部-->
  34. <!--主体-->
  35. <div class="main clearfix">
  36. <div class="main-left">
  37. <div class="border-container">
  38. <div class="name-title">
  39. ===
  40. </div>
  41. <div id="echart1" style="width:100%; height: 300px;;margin:0 auto"></div>
  42. <span class="top-left border-span"></span>
  43. <span class="top-right border-span"></span>
  44. <span class="bottom-left border-span"></span>
  45. <span class="bottom-right border-span"></span>
  46. </div>
  47. <div class="border-container">
  48. <div class="name-title">
  49. ===
  50. </div>
  51. <div id="echart5" style="width:100%; height: 300px;;margin:0 auto"></div>
  52. <ul class="three-pie clearfix">
  53. <li>
  54. <div id="echart7" style="min-width:400px;height:400px"></div>
  55. </li>
  56. </ul>
  57. <span class="top-left border-span"></span>
  58. <span class="top-right border-span"></span>
  59. <span class="bottom-left border-span"></span>
  60. <span class="bottom-right border-span"></span>
  61. </div>
  62. </div>
  63. <div class="main-middle">
  64. <div class="border-container">
  65. <div id=map style="width:100%; height: 100%;text-align:center"></div>
  66. <div class="number-show">
  67. </div>
  68. <span class="top-left border-span"></span>
  69. <span class="top-right border-span"></span>
  70. <span class="bottom-left border-span"></span>
  71. <span class="bottom-right border-span"></span>
  72. </div>
  73. <div class="border-container">
  74. <ul class="teacher-pie clearfix">
  75. <li>
  76. <div class="name-title">
  77. =======
  78. </div>
  79. <div id="echart6" style="width:100%; height: 100%;margin:0 auto"></div>
  80. </li>
  81. <li>
  82. <div class="name-title">
  83. =======
  84. </div>
  85. <div id=echart3 style="width:100%; height: 100%;text-align:center"></div>
  86. </li>
  87. </ul>
  88. <div class="name-title">
  89. ===
  90. </div>
  91. <div id="myTest" style="width:700px;height:60px;margin:20px auto">
  92. <label for="name">地名:</label><input type="text" id="myName">
  93. <label for="num">销量:</label><input type="text" id="myNum">
  94. <button id="myButton" type="submit" onClick="su()" style="display:inline-block;">更新</button>
  95. <button id="myButton1" type="submit" onClick="del()" style="display:inline-block;">删除</button>
  96. <button id="myButton2" type="submit" onClick="save()" style="display:inline-block;">增加</button>
  97. </div>
  98. <span class="top-left border-span"></span>
  99. <span class="top-right border-span"></span>
  100. <span class="bottom-left border-span"></span>
  101. <span class="bottom-right border-span"></span>
  102. </div>
  103. </div>
  104. <div class="main-right">
  105. <div class="border-container">
  106. <div class="name-title">
  107. ===各市的iPhone销售量(虚拟)
  108. </div>
  109. <span class="top-left border-span"></span>
  110. <span class="top-right border-span"></span>
  111. <span class="bottom-left border-span"></span>
  112. <span class="bottom-right border-span"></span>
  113. </div>
  114. <div class="border-container">
  115. <div class="name-title">
  116. ===
  117. </div>
  118. <div id=echart4 style="width:100%; height: 300px;display:inline-block;margin:0 auto"></div>
  119. <span class="top-left border-span"></span>
  120. <span class="top-right border-span"></span>
  121. <span class="bottom-left border-span"></span>
  122. <span class="bottom-right border-span"></span>
  123. </div>
  124. <div class="border-container">
  125. <div class="name-title">
  126. ===<h1 style="color:#180909;font-size:20px">漏斗图</h1>
  127. </div>
  128. <div id=echart2 style="width:110%; height:300px;margin:0 auto"></div>
  129. <span class="top-left border-span"></span>
  130. <span class="top-right border-span"></span>
  131. <span class="bottom-left border-span"></span>
  132. <span class="bottom-right border-span"></span>
  133. </div>
  134. </div>
  135. </div>
  136. <script type="text/javascript">
  137. //数据插入
  138. function su(){
  139. var j={"name":$("#myName").val(),"num":$("#myNum").val()};
  140. $.ajax({
  141. type:'post',
  142. url:'jsoService',
  143. dataType:'json',
  144. data:{"name":$("#myName").val(),"num":$("#myNum").val()},
  145. contentType:"application/x-www-form-urlencoded",
  146. success:function(message){
  147. alert("success");
  148. }
  149. });
  150. window.location.reload();
  151. }
  152. </script>
  153. <script type="text/javascript">
  154. //数据删除
  155. function del(){
  156. var j={"name":$("#myName").val()};
  157. $.ajax({
  158. type:'post',
  159. url:'delServlet',
  160. dataType:'json',
  161. data:{"name":$("#myName").val()},
  162. contentType:"application/x-www-form-urlencoded",
  163. success:function(message){
  164. alert("success");
  165. }
  166. });
  167. window.location.reload();
  168. }
  169. </script>
  170. <script type="text/javascript">
  171. //数据插入
  172. function save(){
  173. var j={"name":$("#myName").val(),"num":$("#myNum").val()};
  174. $.ajax({
  175. type:'post',
  176. url:'saveService',
  177. dataType:'json',
  178. data:{"name":$("#myName").val(),"num":$("#myNum").val()},
  179. contentType:"application/x-www-form-urlencoded",
  180. success:function(message){
  181. alert("success");
  182. }
  183. });
  184. window.location.reload();
  185. }
  186. </script>
  187. <!--柱状图 这是用hightchart插件与其他不同 -->
  188. <script>
  189. $.ajax({
  190. type : "post",
  191. async : true, //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)
  192. url : "barservice", //请求发送到TestServlet处
  193. data : {},
  194. dataType : "json", //返回数据形式为json
  195. success : function(result) {
  196. //请求成功时执行该函数内容,result即为服务器返回的json对象
  197. if (result) {
  198. var names1=[];
  199. for(var i=0;i<result.length;i++){
  200. names1[i]=result[i].name;
  201. }
  202. var values=[];
  203. for(var i=0;i<result.length;i++){
  204. values[i]=result[i].num;
  205. }
  206. var chart = new Highcharts.Chart({
  207. chart: {
  208. backgroundColor: 'rgba(0,0,0,0)',
  209. renderTo: 'echart1',
  210. type: 'column',
  211. options3d: {
  212. enabled: true,
  213. alpha: 25,
  214. beta: 15,
  215. depth: 50,
  216. viewDistance: 25
  217. }
  218. },
  219. title: {
  220. text: '柱状图'
  221. },
  222. plotOptions: {
  223. column: {
  224. depth: 25
  225. }
  226. },
  227. xAxis: {
  228. categories:names1
  229. },
  230. series: [{
  231. color:"A02B89",
  232. name:'销量',
  233. data:values
  234. }]
  235. });
  236. }
  237. },
  238. error : function(errorMsg) {
  239. //请求失败时执行该函数
  240. alert("图表请求数据失败!");
  241. }
  242. });
  243. </script>
  244. <!--漏斗图 -->
  245. <script type="text/javascript">
  246. var myChart3= echarts.init(document.getElementById('echart2'));
  247. $.ajax({
  248. type : "post",
  249. async : true, //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)
  250. url : "barservice", //请求发送到TestServlet处
  251. data : {},
  252. dataType : "json", //返回数据形式为json
  253. success : function(result) {
  254. //请求成功时执行该函数内容,result即为服务器返回的json对象
  255. if (result) {
  256. var names=[];
  257. for(var i=0;i<result.length;i++){
  258. names[i]=result[i].name;
  259. }
  260. var datass=[];
  261. for(var i=0;i<result.length;i++){
  262. var obj=new Object();
  263. obj.name=result[i].name;
  264. obj.value=result[i].num;
  265. datass[i]=obj;
  266. }
  267. myChart3.hideLoading(); //隐藏加载动画
  268. myChart3.setOption({ //加载数据图表
  269. tooltip: {
  270. trigger: 'item',
  271. formatter: "{a} <br/>{b} : {c} ({d}%)"
  272. },
  273. legend: {
  274. data: names
  275. },
  276. /* legend: {
  277. data: ['展现','点击','访问','咨询','订单']
  278. }, */
  279. calculable: true,
  280. series: [
  281. {
  282. name:'销量',
  283. type:'funnel',
  284. left: '10%',
  285. top: 60,
  286. //x2: 80,
  287. bottom: 60,
  288. width: '80%',
  289. // height: {totalHeight} - y - y2,
  290. min: 0,
  291. max: 500,
  292. minSize: '0%',
  293. maxSize: '500',
  294. sort: 'descending',
  295. gap: 2,
  296. label: {
  297. show: true,
  298. position: 'inside'
  299. },
  300. labelLine: {
  301. length: 10,
  302. lineStyle: {
  303. width: 1,
  304. type: 'solid'
  305. }
  306. },
  307. itemStyle: {
  308. borderColor: '#fff',
  309. borderWidth: 1
  310. },
  311. emphasis: {
  312. label: {
  313. fontSize: 20
  314. }
  315. },
  316. data:datass
  317. }
  318. ]
  319. });
  320. }
  321. },
  322. error : function(errorMsg) {
  323. //请求失败时执行该函数
  324. alert("图表请求数据失败!");
  325. myChart2.hideLoading();
  326. }
  327. })
  328. </script>
  329. <!-- 折线图 -->
  330. <script type="text/javascript">
  331. $.ajax({
  332. type : "post",
  333. async : true, //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)
  334. url : "barservice", //请求发送到TestServlet处
  335. data : {},
  336. dataType : "json", //返回数据形式为json
  337. success : function(result) {
  338. //请求成功时执行该函数内容,result即为服务器返回的json对象
  339. if (result) {
  340. var names1=[];
  341. for(var i=0;i<result.length;i++){
  342. names1[i]=result[i].name;
  343. }
  344. var values=[];
  345. for(var i=0;i<result.length;i++){
  346. values[i]=result[i].num;
  347. }
  348. var chart = Highcharts.chart('echart3', {
  349. chart: {
  350. type: 'line',
  351. backgroundColor: 'rgba(0,0,0,0)',
  352. },
  353. title: {
  354. text: '折线图'
  355. },
  356. xAxis: {
  357. categories:names1
  358. },
  359. yAxis: {
  360. title: {
  361. text: '销量'
  362. }
  363. },
  364. plotOptions: {
  365. line: {
  366. dataLabels: {
  367. // 开启数据标签
  368. enabled: true
  369. },
  370. // 关闭鼠标跟踪,对应的提示框、点击事件会失效
  371. enableMouseTracking: false
  372. }
  373. },
  374. series: [{
  375. name: '销量',
  376. color:"#a90c16",
  377. data:values
  378. }]
  379. });
  380. }
  381. },
  382. error : function(errorMsg) {
  383. //请求失败时执行该函数
  384. alert("图表请求数据失败!");
  385. }
  386. });
  387. </script>
  388. <!-- 饼图 -->
  389. <script type="text/javascript">
  390. var myChart = echarts.init(document.getElementById('echart4'));
  391. // 显示标题,图例和空的坐标轴
  392. myChart.setOption({
  393. title:{
  394. text:'饼图'
  395. },
  396. legend:{
  397. data:['销量']
  398. },
  399. series : [
  400. {
  401. type: 'pie',
  402. radius: '55%',
  403. data:[
  404. {value:0,name:'无'},
  405. ],
  406. roseType: 'angle',//通过设置 roseType 显示成南丁格尔图
  407. label: {
  408. normal: {
  409. show: true,
  410. formatter: '{b}: {c}({d}%)' //自定义显示格式(b:name, c:value, d:百分比)
  411. }
  412. },
  413. emphasis: {
  414. shadowBlur: 200,
  415. shadowColor: 'rgba(0, 0, 0, 0.5)'
  416. }
  417. },
  418. ]
  419. });
  420. myChart.showLoading(); //数据加载完之前先显示一段简单的loading动画
  421. var names=[]; //类别数组(实际用来盛放X轴坐标值)
  422. var nums=[]; //销量数组(实际用来盛放Y坐标值)
  423. $.ajax({
  424. type : "post",
  425. async : true, //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)
  426. url : "barservice", //请求发送到TestServlet处
  427. data : {},
  428. dataType : "json", //返回数据形式为json
  429. success : function(result) {
  430. //请求成功时执行该函数内容,result即为服务器返回的json对象
  431. if (result) {
  432. var servicedata=[];
  433. for(var i=0;i<result.length;i++){
  434. var obj=new Object();
  435. obj.name=result[i].name;
  436. obj.value=result[i].num;
  437. servicedata[i]=obj;
  438. }
  439. myChart.hideLoading(); //隐藏加载动画
  440. myChart.setOption({ //加载数据图表
  441. series : [
  442. {
  443. name: '销售liang',
  444. data:servicedata,
  445. }
  446. ]
  447. });
  448. }
  449. },
  450. error : function(errorMsg) {
  451. //请求失败时执行该函数
  452. alert("图表请求数据失败!");
  453. myChart.hideLoading();
  454. }
  455. })
  456. </script>
  457. <!-- 雷达图 这是用highcharts插件与其他不同 并且js中出现$字符前面必须加转义字符\ 否则会与tomcat保错不能运行-->
  458. <script>
  459. $.ajax({
  460. type : "post",
  461. async : true, //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)
  462. url : "barservice", //请求发送到TestServlet处
  463. data : {},
  464. dataType : "json", //返回数据形式为json
  465. success : function(result) {
  466. //请求成功时执行该函数内容,result即为服务器返回的json对象
  467. if (result) {
  468. var names1=[];
  469. for(var i=0;i<result.length;i++){
  470. names1[i]=result[i].name;
  471. }
  472. var values=[];
  473. for(var i=0;i<result.length;i++){
  474. values[i]=result[i].num;
  475. }
  476. var chart = Highcharts.chart('echart5', {
  477. chart: {
  478. polar: true,
  479. type: 'line',
  480. backgroundColor: 'rgba(0,0,0,0)'
  481. },
  482. title: {
  483. text: '雷达图',
  484. x: -80
  485. },
  486. pane: {
  487. size: '80%'
  488. },
  489. xAxis: {
  490. categories:names1,
  491. tickmarkPlacement: 'on',
  492. lineWidth: 0
  493. },
  494. yAxis: {
  495. gridLineInterpolation: 'polygon',
  496. lineWidth: 0,
  497. min: 0
  498. },
  499. tooltip: {
  500. shared: true,
  501. pointFormat: '<span style="color:{series.color}">{series.name}: <b>\${point.y:,.0f}</b><br/>'
  502. },
  503. legend: {
  504. align: 'right',
  505. verticalAlign: 'top',
  506. y: 70,
  507. layout: 'vertical'
  508. },
  509. series: [{
  510. name: '销量',
  511. data:values,
  512. pointPlacement: 'on'
  513. }]
  514. });
  515. }
  516. },
  517. error : function(errorMsg) {
  518. //请求失败时执行该函数
  519. alert("图表请求数据失败!");
  520. }
  521. });
  522. </script>
  523. <!-- 曲线图 -->
  524. <script type="text/javascript">
  525. $.ajax({
  526. type : "post",
  527. async : true, //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)
  528. url : "barservice", //请求发送到TestServlet处
  529. data : {},
  530. dataType : "json", //返回数据形式为json
  531. success : function(result) {
  532. //请求成功时执行该函数内容,result即为服务器返回的json对象
  533. if (result) {
  534. var names1=[];
  535. for(var i=0;i<result.length;i++){
  536. names1[i]=result[i].name;
  537. }
  538. var values=[];
  539. for(var i=0;i<result.length;i++){
  540. values[i]=result[i].num;
  541. }
  542. var chart = Highcharts.chart('echart6', {
  543. chart: {
  544. type: 'areaspline',
  545. backgroundColor: 'rgba(0,0,0,0)'
  546. },
  547. title: {
  548. text: '曲线图'
  549. },
  550. legend: {
  551. layout: 'vertical',
  552. align: 'left',
  553. verticalAlign: 'top',
  554. x: 150,
  555. y: 100,
  556. floating: true,
  557. borderWidth: 1,
  558. backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF'
  559. },
  560. xAxis: {
  561. categories:names1,
  562. },
  563. yAxis: {
  564. title: {
  565. text: '销量'
  566. }
  567. },
  568. tooltip: {
  569. shared: true,
  570. valueSuffix: ' 元'
  571. },
  572. plotOptions: {
  573. areaspline: {
  574. fillOpacity: 0.5
  575. }
  576. },
  577. series: [{
  578. color:"#150a10",
  579. name: '销量',
  580. data:values
  581. }]
  582. });
  583. }
  584. },
  585. error : function(errorMsg) {
  586. //请求失败时执行该函数
  587. alert("图表请求数据失败!");
  588. }
  589. });
  590. </script>
  591. <!--地图 -->
  592. <script>
  593. // 随机数据
  594. $.ajax({
  595. type : "post",
  596. async : true, //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)
  597. url : "barservice", //请求发送到TestServlet处
  598. data : {},
  599. dataType : "json", //返回数据形式为json
  600. success : function(result) {
  601. //请求成功时执行该函数内容,result即为服务器返回的json对象
  602. if (result) {
  603. var servicedata=[];
  604. for(var i=0;i<result.length;i++){
  605. var obj=new Object();
  606. obj.name=result[i].name;
  607. obj.value=result[i].num;
  608. servicedata[i]=obj;
  609. }
  610. var data =servicedata
  611. // 初始化图表
  612. var map = new Highcharts.Map('map', {
  613. chart: {
  614. backgroundColor: 'rgba(0,0,0,0)'
  615. },
  616. title: {
  617. text: '广东省'
  618. },
  619. colorAxis: {
  620. min: 0,
  621. minColor: 'rgb(255,255,255)',
  622. maxColor: '#006cee'
  623. },
  624. colorAxis: {
  625. min: 1,
  626. type: 'logarithmic',
  627. minColor: '#EEEEFF',
  628. maxColor: '#000022',
  629. stops: [
  630. [0, '#EFEFFF'],
  631. [0.67, '#4444FF'],
  632. [1, '#000022']
  633. ]
  634. },
  635. series: [{
  636. color:"#150a10",
  637. data: data,
  638. name: '销量',
  639. mapData: Highcharts.maps['cn/guangdong'],
  640. joinBy: 'name' // 根据 name 属性进行关联
  641. }]
  642. });
  643. }
  644. },
  645. error : function(errorMsg) {
  646. //请求失败时执行该函数
  647. alert("图表请求数据失败!");
  648. }
  649. });
  650. </script>
  651. <!-- 环形图 -->
  652. <script type="text/javascript">
  653. $.ajax({
  654. type : "post",
  655. async : true, //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)
  656. url : "barservice", //请求发送到TestServlet处
  657. data : {},
  658. dataType : "json", //返回数据形式为json
  659. success : function(result) {
  660. //请求成功时执行该函数内容,result即为服务器返回的json对象
  661. if (result) {
  662. var names1=[];
  663. for(var i=0;i<result.length;i++){
  664. names1[i]=result[i].name;
  665. }
  666. var servicedata=[];
  667. for(var i=0;i<result.length;i++){
  668. var obj=new Object();
  669. obj.name=result[i].name;
  670. obj.value=result[i].num;
  671. servicedata[i]=obj;
  672. }
  673. var values=[];
  674. for(var i=0;i<result.length;i++){
  675. values[i]=result[i].num;
  676. }
  677. var mychart= echarts.init(document.getElementById('echart7'));
  678. mychart.setOption({
  679. tooltip: {
  680. trigger: 'item',
  681. formatter: "{a} <br/>{b}: {c} ({d}%)"
  682. },
  683. legend: {
  684. orient: 'vertical',
  685. x: 'left',
  686. data:names1
  687. },
  688. series: [
  689. {
  690. name:'销量',
  691. type:'pie',
  692. radius: ['50%', '70%'],
  693. avoidLabelOverlap: false,
  694. label: {
  695. normal: {
  696. show: false,
  697. position: 'center'
  698. },
  699. emphasis: {
  700. show: true,
  701. textStyle: {
  702. fontSize: '30',
  703. fontWeight: 'bold'
  704. }
  705. }
  706. },
  707. labelLine: {
  708. normal: {
  709. show: false
  710. }
  711. },
  712. data:servicedata
  713. }
  714. ]
  715. });
  716. }
  717. },
  718. error : function(errorMsg) {
  719. //请求失败时执行该函数
  720. alert("图表请求数据失败!");
  721. }
  722. });
  723. </script>
  724. </body>
  725. </html>