Highcharts配合Jquery ajax 请求本页面
<%@ 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(不懂,调试时才发现),但是在调用本页面时不行。最好还是不在本页面做请求。
浙公网安备 33010602011771号