2016-04-25 1 views
0

Я пытаюсь создать динамическую карту тепла, вызывая код по методу, который передает данные в тепловую карту. У меня есть таймер, который вызывает функцию GetNewHeatMapDataTable(). Функция извлекает новые данные и подталкивает их к существующему массиву (pointArray) для динамического обновления карты. Таймер работает как ожидается. Однако значение переменной newheatmapdata не изменяется, и функция вызывает только код позади метода GetIAHeatMapDataTable («XXXXXXX») только один раз. Я не уверен, что я делаю неправильно. Я надеюсь, кто-то может указать мне в правильном направлении.Таймер Javascript вызывает метод code behind только один раз

Ниже приведен фрагмент моего кода

var heatmapData = []; 
function GetDataTableFromCodeBehind() { 

     heatmapData = <%=GetIAHeatMapDataTable("XXXXXXX")%>;       
    }   


var pointArray = new google.maps.MVCArray(heatmapData); 
    var heatmapLayer = new google.maps.visualization.HeatmapLayer({ 
     data: pointArray, 
     dissipating: false, 
     radius: 0.00001 
    }); 

function GetNewHeatMapDataTable() {    
     var newheatmapdata = [] 
     newheatmapdata = <%=GetIANewHeatMapDataTable("XXXXXXX")%>;    

     if (newheatmapdata.length > 0){ 

      for (i = 0; i < newheatmapdata.length; i++) { 
       pointArray.push.apply(pointArray, newheatmapdata);      
      } 
     }         
    } 
setInterval(function() {GetNewHeatMapDataTable();},3000); 

Спасибо заранее.

+1

Вы не можете вызвать метод сервера, как, что от клиента, вам нужно сделать вызов AJAX на сервер. Javascript не знает о методе на стороне сервера, все, что вы делаете с текущим кодом, вызывает метод один раз при создании страницы. – Stephen

+0

Вы видите различное значение этого GetIANewHeatMapDataTable («XXXXXXX») – brk

+0

Привет, user2181397, Я не вижу разных значений. Я могу вызвать метод и успешно получить массив данных только один раз. Однако как только таймер попадает в интервал, метод GetIANewHeatMapDataTable («XXXXXXX») больше не вызывается, а начальное значение переменной newheatmapdata не изменяется – darwin25

ответ

0

РЕШЕННЫЙ: Большое спасибо Стивен. Я сделал то же, что и вы. Работал как шарм. Это мой новый код для извлечения новых данных и толкая его тепловой карту

function fetchNewData() {  
      $.ajax({ 
       type: "POST", 
       url: "Webform1.aspx/GetIANewHeatMapDataTable", 
       data: JSON.stringify({ level: "XXXXXXX" }), 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       async: false, 
       success: function(data) {      
        var newheatmapdata = [] ; 
        newheatmapdata = eval('(' + data.d + ')'); 

        if (newheatmapdata.length > 0){  
         for (i = 0; i < newheatmapdata.length; i++) {         
          pointArray.push.apply(pointArray, newheatmapdata);          
          heatmapLayer.setData(pointArray); 
         } 
        }        
       }, 
      }); 

     } 
    setInterval(function() {fetchNewData();},1000); 
Смежные вопросы