2017-04-22 110 views
0

我从c#数据库中获取数据并使用Ajax将它传递到Javascript中。我将这些数据存储在数组中。我每3秒查询一次数据库。我正在使用这些数据来更新我的图表,例如更改曲目的颜色。仿真工作正常,直到30秒后,我的用户界面(浏览器)卡住,并没有得到更新。您能否告诉我如何让仿真运行而不会卡住?UI不更新

代码:

function getData() { 
      $(document).ready(function() { 
       var q = setInterval(getData, 3000); 
       jQuery.ajax({ 
        type: "POST", 
        url: "WebForm1.aspx/GetStations", //It calls our web method 
        contentType: "application/json; charset=utf-8", 
        data: JSON.stringify({ myArray: dl_id_track }), 
        dataType: "json", 
        async: true, 
        success: function (data) { 
         if (data != null) { 
          var len = data.d.length;       
          for (var i = 0; i < len; i++) { 
           signo[i] = data.d[i].signo; 
           status[i] = data.d[i].status; 
          } 

        } 
        simulate(); 
       }, 
       error: function (d) { 
       } 
      }); 

});

} 



function simulate() { 

      for (var i = 0; i < b.length; i++) { 
       for (var j = 0; j < 1024; j++) { 
        //track 
        if (signo[j] == sig_no_track[i]) { 
         if (status[j] == "1") { 
          var x1 = parseInt(left_track[i]) + parseInt(x1_track[i]); 
          var y1 = parseInt(top_track[i]) + parseInt(y1_track[i]); 
          var x2 = parseInt(left_track[i]) + parseInt(x2_track[i]); 
          var y2 = parseInt(top_track[i]) + parseInt(y2_track[i]); 
          var line1 = draw.line([[x1, y1], [x2, y2]]).stroke({ width: 3, color: '#ff0000' }); 



       } 
+0

你能展示你的代码的相关部分吗? –

+0

我已添加代码。 getData函数从C#中的数据库获取数据。模拟功能改变轨道的颜色。 – padma

回答

0

我只涉足网络的发展,所以我不是专家,但因为没有其他人回应,我有一半的-想法...

在我看来(没有专家)喜欢它可能递归,创建一个无限循环...虽然也许由于setInterval慢。我会倾向于看它是否工作,如果你移动:

$(document).ready(function() { 
    var q = setInterval(getData, 3000); 
}); 

出了第一个功能的和你<script>块的结尾。为了测试它,你需要从getData函数本身中失去相应的});

+0

谢谢,它的工作!它现在不会卡住。 – padma