2016-04-25 54 views
0

我試圖通過調用methodw後面的代碼來爲熱圖提供數據來創建動態熱圖。我有一個計時器,調用函數GetNewHeatMapDataTable()。該函數獲取新數據並將其推送到現有數組(pointArray)以動態更新地圖。計時器按預期運行。然而,可變newheatmapdata的值不改變,並且該函數僅調用後面方法GetIAHeatMapDataTable(「XXXXXXX」)代碼只有一次。我不知道我做錯了什麼。我希望有人能指出我正確的方向。Javascript定時器僅調用一次代碼方法

下面是我的代碼

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

已解決:非常感謝Stephen。我按照你的建議做了。像魅力一樣工作。這是我獲取新的數據,並將其推到熱圖

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); 
相關問題