2016-11-02 2 views
0

Ich arbeite auf asp.net MVC 5. Ich habe 4 verschiedene Arten von Diagrammen erstellt, die auf derselben Seite anzeigen. Ich erhalte Daten von einem Meter in einem Intervall von fast 15-20 Sekunden. Alles, was ich tun möchte, ist, meine Diagramme nach jeweils 15/20 Sekunden zu aktualisieren, so dass ich für jeden neuen Eintrag in DB meine Seite nicht manuell aktualisieren sollte. Dazu habe ich wie javascript setInterval in meiner Grafikansicht verwendet untenHighcharts automatische Aktualisierung in asp.net MVC

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

Bellow sind meine divs, in denen ich legte meine Charts

<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> 

Bei $(window).on('load', function() { } ich meine 4-Charts Initialisierung wie unten platziert haben

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}); 

Alle Daten in Diagrammen kommen in Array-Format

Also nach meiner Seite

enter image description here

wie unten Bild aussehen läuft Nachdem ich Ok drücken i erhalten unten

enter image description here

Ich weiß nicht, warum es passiert, ich möchte nur auffrischen/lade nur die Charts neu, aber ich bekomme die obigen Ergebnisse, da es die gesamte Seite aktualisiert, auch bei der Aktualisierung kann ich meine Charts nicht anzeigen

Außerdem meine Karten werden in einer Ansicht platziert und diese Ansicht wird im Anschluss an die Haupt layout dh sonst Charts und Suchleiste Alle meine Ansicht von Layout

kommt

UPDATE:

Bellow ist das Bild, das mir zeigt, die Daten in result

enter image description here

Jede Hilfe sehr geschätzt würde

+0

tun ajax nicht die gleiche Seite, Ajax nur den Inhalt des Charts Mann – madalinivascu

+0

Was passiert, wenn ich meine Charts in einer Teilansicht platzieren und dann diese Teilansicht neu laden? – faisal1208

+0

es ist eine bessere Situation als die aktuelle – madalinivascu

Antwort

0

Da Sie setInterval verwenden, wiederholt es alles, was in dieser Klausel enthalten ist, fügt das HighChart-Objekt in diesem Objekt hinzu.

Was Sie tun können, ist beforeSend in Ihrer Ajax hinzufügen:

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

Versucht es, aber nicht von irgendwelchen Nutzen – faisal1208

+0

So muss ich keine Erfolgsfunktion verwenden? – faisal1208

+0

das gleiche Ergebnis wie im Bild meiner Frage – faisal1208

Verwandte Themen