如何在实时图表中显示Json个随机数?
How do I display a Json random number in a real-time Flot chart?
我在我的 C# 页面中创建了一个随机数,它存储在一个 json 对象中:
if (method == "rnd")
{
//Random number
this.Page.Response.ContentType = "application/json2";
Random rnd = new Random();
int nr = rnd.Next(1, 100); // creates a number between 1 and 99
String str1 = nr.ToString();
var json2 = new JavaScriptSerializer().Serialize(str1);
this.Page.Response.Write(json2);
}
然后我将其显示在我的 ASP 页面上:
function test2() {
$.ajax({
type: 'GET',
url: ('ajax.aspx?meth=') + "rnd",/
contentType: 'application/json2; charset=utf-8',
dataType: 'json',
async: true,
cache: false,
global: false,
timeout: 120000,
success: function (data, textStatus, jqXHR) {
$('#nr').html(data);
//start: plot in real time
var plot = $.plot("#placeholder", data, {
series: {
shadowSize: 0 // Drawing is faster without shadows
},
yaxis: {
min: 0,
max: 100
},
xaxis: {
show: false
}
});
//end: plot in real time
},
error: function (jqXHR, textStatus, errorThrown) {
window.alert(errorThrown);
}
});
}
window.setInterval(test2, 1000);
和 HTML:
<div id="nr"></div>
<div class="demo-container">
<div id="placeholder" class="demo-placeholder"></div>
</div>
我的图表上没有随机数。我做错了什么?我从这里获取的 //start: plot in real time
和 //end: plot in real time
之间的代码:http://www.flotcharts.org/flot/examples/realtime/index.html
Flot 需要它的数据作为一组数据系列和数据点,而不仅仅是一个数字。最简单的解决方案是在 $.plot()
调用之前插入:
data = [[[1, data]]];
如果您想像示例中那样随着时间的推移构建图表,则必须从一个(空)数组开始,然后添加您获得的每个新数字。
编辑:
对于完整的行,为图表数据和计数器定义一个全局变量:
var completeData = [[]];
var dataCounter = 0;
在您的 success
回调中,代替上面的代码插入:
completeData[0].push([dataCounter++, data]);
并将 $.plot()
调用更改为
var plot = $.plot("#placeholder", completeData, {
在您的客户端试试这个:
function test2() {
$.ajax({
type: 'GET',
url: ('ajax.aspx?meth=') + "rnd",
contentType: 'application/json2; charset=utf-8',
dataType: 'json',
//async: true,
//cache: false,
//global: false,
// timeout: 120000,
success: function (data, textStatus, jqXHR) {
var obj = jQuery.parseJSON(data);
$('#azi').html(obj.sec);
$('#nr').html(obj.val);
$('#nr1').html(obj.val1);
t = obj.val;
t1 = obj.val1;
},
error: function (jqXHR, textStatus, errorThrown) {
window.alert(errorThrown);
}
});
}
我在我的 C# 页面中创建了一个随机数,它存储在一个 json 对象中:
if (method == "rnd")
{
//Random number
this.Page.Response.ContentType = "application/json2";
Random rnd = new Random();
int nr = rnd.Next(1, 100); // creates a number between 1 and 99
String str1 = nr.ToString();
var json2 = new JavaScriptSerializer().Serialize(str1);
this.Page.Response.Write(json2);
}
然后我将其显示在我的 ASP 页面上:
function test2() {
$.ajax({
type: 'GET',
url: ('ajax.aspx?meth=') + "rnd",/
contentType: 'application/json2; charset=utf-8',
dataType: 'json',
async: true,
cache: false,
global: false,
timeout: 120000,
success: function (data, textStatus, jqXHR) {
$('#nr').html(data);
//start: plot in real time
var plot = $.plot("#placeholder", data, {
series: {
shadowSize: 0 // Drawing is faster without shadows
},
yaxis: {
min: 0,
max: 100
},
xaxis: {
show: false
}
});
//end: plot in real time
},
error: function (jqXHR, textStatus, errorThrown) {
window.alert(errorThrown);
}
});
}
window.setInterval(test2, 1000);
和 HTML:
<div id="nr"></div>
<div class="demo-container">
<div id="placeholder" class="demo-placeholder"></div>
</div>
我的图表上没有随机数。我做错了什么?我从这里获取的 //start: plot in real time
和 //end: plot in real time
之间的代码:http://www.flotcharts.org/flot/examples/realtime/index.html
Flot 需要它的数据作为一组数据系列和数据点,而不仅仅是一个数字。最简单的解决方案是在 $.plot()
调用之前插入:
data = [[[1, data]]];
如果您想像示例中那样随着时间的推移构建图表,则必须从一个(空)数组开始,然后添加您获得的每个新数字。
编辑:
对于完整的行,为图表数据和计数器定义一个全局变量:
var completeData = [[]];
var dataCounter = 0;
在您的 success
回调中,代替上面的代码插入:
completeData[0].push([dataCounter++, data]);
并将 $.plot()
调用更改为
var plot = $.plot("#placeholder", completeData, {
在您的客户端试试这个:
function test2() {
$.ajax({
type: 'GET',
url: ('ajax.aspx?meth=') + "rnd",
contentType: 'application/json2; charset=utf-8',
dataType: 'json',
//async: true,
//cache: false,
//global: false,
// timeout: 120000,
success: function (data, textStatus, jqXHR) {
var obj = jQuery.parseJSON(data);
$('#azi').html(obj.sec);
$('#nr').html(obj.val);
$('#nr1').html(obj.val1);
t = obj.val;
t1 = obj.val1;
},
error: function (jqXHR, textStatus, errorThrown) {
window.alert(errorThrown);
}
});
}