<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Highcharts Example.aspx.cs" Inherits="WebApp.Highcharts_Example" %> <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Highcharts Example</title> <script type="text/javascript" src="Scripts/jquery-1.8.3.min.js"></script> <script type="text/javascript"> $(function () { $(document).ready(function () { Highcharts.setOptions({ global: { useUTC: false } }); var chart; chart = new Highcharts.Chart({ chart: { renderTo: 'container', type: 'spline', marginRight: 10, events: { load: function () { // set up the updating of the chart each second var series = this.series[0]; var LoadData = function () { var drp = $("#drp").val() $.ajax({ url: 'Highcharts Example.aspx/getRandom', data: "{drp:"+drp+"}", dataType: 'json', type: 'post', contentType: "application/json;charset=utf-8", success: function (data) { var x = (new Date()).getTime(); var y = $.parseJSON(data.d).val; series.addPoint([x, y], true, true); }, error: function () { alert('Error !'); } }); // alert($("#drp").val()); // var x = (new Date()).getTime(), // current time // y = Math.random(); // series.addPoint([x, y], true, true); }; //LoadData(); setInterval(LoadData, 2000); } } }, title: { text: 'Live random data' }, xAxis: { type: 'datetime', tickPixelInterval: 150 }, yAxis: { title: { text: 'Value' }, plotLines: [{ value: 0, width: 1, color: '#808080' }] }, tooltip: { formatter: function () { return '<b>' + this.series.name + '</b><br/>' + Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.x) + '<br/>' + Highcharts.numberFormat(this.y, 2); } }, legend: { enabled: false }, exporting: { enabled: false }, series: [{ name: 'Random data', data: (function () { // generate an array of random data var data = [], time = (new Date()).getTime(), i; for (i = -19; i <= 0; i++) { data.push({ x: time + i * 1000, y: Math.random() }); } return data; })() }] }); }); }); </script> </head> <body> <script src="Scripts/highcharts/highcharts.js"></script> <script src="Scripts/highcharts/modules/exporting.js"></script> <div id="container" style="min-width: 400px; height: 400px; margin: 0 auto"></div> <select id="drp" name="drp"> <option>1</option> <option>2</option> <option>3</option> </select> </body> </html>
后台:
using System.Web.Services; namespace WebApp { public partial class Highcharts_Example : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } [WebMethod] public static string getRandom(string drp) { Random rm = new Random(); int _drp = Convert.ToInt32(drp); // int drp =Convert.ToInt32(HttpContext.Current.Request.Params["drp"]); return "{ \"val\":" + rm.Next(100) * _drp + "}"; } } }
Highcharts模仿CPU動作,2秒一刷新。調用本頁面方法,首先后台方法必須為靜態的,還在ajax請求的時候contextType格式必須是如上,data傳值,這個問題困擾很久以前傳值都用data: { "drp": $("#drp").val() }這個格式要不老是報500錯誤,還有得到的數據格式,在后面必須加個d(不懂,調試時才發現),但是在調用本頁面時不行。最好還是不在本頁面做請求。