2016-04-03 21 views
0

cal-HeatMap ile oynuyorum ve statik json verileri çalışırken birkaç örnek aldım. Şimdi json verilerini dinamik olarak bir REST servisi kullanarak yüklemek istiyorum. Unfortunataly, bu REST hizmetinden verileri tüketirken beklendiği gibi çalışmaz. cal-HeatMap sorunu REST hizmetine ait verilerle

Bu

(çalışmıyor RESTful versiyon) cal-HeatMap ait kodudur:

var heatData = dojo.xhr.get({ 
    url:"http://localhost:8080/webapp/xfull2.nsf/services.xsp/heatdata", 
    handleAs:"json" 
}); 

var cal = new CalHeatMap(); 
cal.init(
{ 
    itemSelector:"#cal-heatmap", 
    range: 10, 
    start: new Date(2016, 3,4,1), 
    data: heatData 
} 
); 

DİNLENME çağrı ateş gibi görünüyor ve JSON sonuç döndürür: On

{ 
    "1459742400":1, 
    "1459749600":1, 
    "1459753200":1, 
    "1459756800":1, 
    "1459767600":1 
} 

tarayıcı konsol şu hatayı görüyorum: TypeError: bir

(cal-heatmap.min.js olarak) cal-hea .... min.js (Hat 8, Sütun 30282) tanımlanmadı 0 JSON'u REST çağrısından .json dosyası olarak kaydettim ve cal-HeatMap'i bu dosyayla test ettim. Bu durumda, düzgün çalışıyor.

var cal = new CalHeatMap(); 
cal.init(
{ 
    itemSelector:"#cal-heatmap", 
    range: 10, 
    start: new Date(2016, 3,4,1), 
    data: "js/cal-heatmap/sample-json/testdata.json" 
} 
); 

dosyası (aynı yukarıdaki gibi) şöyle testdata.json:

{ 
    "1459742400":1, 
    "1459749600":1, 
    "1459753200":1, 
    "1459756800":1, 
    "1459767600":1 
} 

sonuç (Tamam olan) aşağıdaki gibidir: enter image description here Bu benim kod statik versiyonu

Burada nelerin eksik? Herhangi bir yardım veya ipucu takdir edilir.

cevap

0

Sonunda sorunu kodumla buldum - ve sorunun cevabı oldukça açık. Xhr.get ile eşzamansız bir REST çağrısı kullandığım için geri aramada HeatMap nesnesini oluşturmalıyım. Aksi takdirde, HeatMap nesnesi oluşturulduğunda veriler henüz mevcut değildir.

doğru kod şuna benzer:

var heatData = dojo.xhr.get({ 
    url:"http://localhost:8080/webapp/xfull2.nsf/services.xsp/heatdata", 
    handleAs:"json", 
    load: function(data) { 
     var cal = new CalHeatMap(); 
     cal.init({ 
       itemSelector:"#cal-heatmap", 
       range: 10, 
       start: new Date(2016, 3,4,1), 
       data: data 
       }); 
    } 
}) 
İlgili konular