简体   繁体   English

在ASP.NET MVC中自动刷新Highcharts

[英]Highcharts auto refresh in asp.net MVC

I am working on asp.net MVC 5. I have created 4 different types of charts in it which are viewing on same page. 我正在使用asp.net MVC5。我在其中创建了4种不同类型的图表,这些图表在同一页面上查看。 I am getting data from a meter at almost 15-20 seconds interval. 我正在以近15-20秒的间隔从电表获取数据。 All i want to do is to refresh my charts after each 15/20 seconds so for every new entry in DB i should not refresh my page manually. 我要做的就是每15/20秒刷新一次图表,因此对于DB中的每个新条目,我都不应该手动刷新页面。 For this i have used javascript setInterval in my graph view like bellow 为此,我在像波纹管这样的图形视图中使用了javascript setInterval

setInterval(function () {
    $.ajax({
        url: '/Home/MultiGraph',
        type: "POST",
        success: function (result) {
            $("#c1").html(result);
        }
    });        
    alert("hello");
}, 3000);

Bellow are my divs in which i have placed my charts 贝娄是我divs中,我已经把我的图表

<div id="c1">
    <div id="container1" style="height: 400px; width:auto"></div>


    <div id="container2" style="height: 400px; width:auto"></div>


    <div id="container3" style="height: 400px; width:auto"></div>


    <div id="container4" style="height: 400px; width:auto"></div>
</div>

At $(window).on('load', function () { } i have placed my 4 charts initialization like bellow $(window).on('load', function () { }我像波纹管一样放置了4个图表初始化

var chart1 = new Highcharts.Chart({//rendered to container1});
var chart2 = new Highcharts.Chart({//rendered to container2});
var chart3 = new Highcharts.Chart({//rendered to container3});
var chart4 = new Highcharts.Chart({//rendered to container4});

All the data in charts are coming in array format 图表中的所有数据均以数组格式显示

So after running my page look like bellow image 所以运行我的页面后看起来像下面的图像

在此处输入图片说明

After i press Ok i get bellow 我按Ok我会吼叫

在此处输入图片说明

I don't know why it's happening, i just want to refresh/reload the charts only but all i am getting the above results as it's refresh the whole page also on refresh i am unable to view my charts 我不知道为什么会这样,我只想刷新/重新加载图表,但是我得到的都是上面的结果,因为刷新整个页面也刷新了,我无法查看图表

Moreover my charts are placed in a view and this view is following the main layout ie else charts and search bar all my view is coming from layout 此外,我的图表放置在一个视图中,并且该视图遵循主layout即图表和搜索栏所有我的视图都来自布局

UPDATE: 更新:

Bellow is the image which is showing me the data in result 波纹管是显示给我result数据的图像

在此处输入图片说明

Any help would be highly appreciated 任何帮助将不胜感激

since you are using setInterval it repeats everything inside on that clause, it keeps adding HighChart object in that object. 由于您正在使用setInterval它会重复该子句中的所有内容,因此会继续在该对象中添加HighChart对象。

What you can do is add beforeSend in your ajax: 您可以做的是在ajax中添加beforeSend

$.ajax({
    url: '/Home/MultiGraph',
    type: "POST",
    beforeSend: function (result) {
            $("#c1").empty(); //empty first the div
    },
    success: function (result) {
        $("#c1").html(result);
    }
}); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM