2016-04-25 13 views
0

ヒートマップにデータを供給するmethodwのコードを呼び出して動的ヒートマップを作成しようとしています。私は関数を呼び出すタイマを持っていますGetNewHeatMapDataTable()。この関数は新しいデータをフェッチし、既存の配列(pointArray)にプッシュしてマップをダイナミックに更新します。タイマーは期待どおりに実行されます。ただし、変数newheatmapdataの値は変更されず、関数はコードGetIAHeatMapDataTable( "XXXXXXX")のコードビハインドを1回だけ呼び出します。私は何が間違っているのか分かりません。私は誰かが正しい方向に私を向けることを望んでいる。以下はJavascriptタイマーはコードビハインドメソッドを1回だけ呼び出します

私のコードのスニペットは、事前に

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、 私は異なる値が表示されていません。メソッドを呼び出して、データ配列を1回だけ正常に取得できます。しかし、タイマーが時間を過ぎると、メソッド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); 
関連する問題