用户界面未更新

时间:2017-04-22 11:51:14

标签: javascript c# ajax user-interface

我从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' });



                }

1 个答案:

答案 0 :(得分:0)

我只涉足网络开发,所以我不是专家,但是因为没有其他人做出回应而且我有半个想法......

它看起来像我(没有专家),它可能会递归,创建一个无限循环......虽然由于setInterval可能是一个缓慢的循环。如果你搬家我会倾向于看它是否有效:

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

从第一个函数开始,到<script>块的末尾。要对此进行测试,您需要从});函数本身丢失相应的getData