来自REST服务

时间:2016-04-03 14:04:07

标签: javascript json rest cal-heatmap

我正在使用cal-HeatMap,并获得了一些运行静态json数据的示例。现在我想使用REST服务动态加载json数据。 Unfortunataly,当我从REST服务中使用数据时,这不会按预期工作。

这是cal-HeatMap的代码(RESTful版本不起作用):

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
}
);

REST调用似乎触发并返回JSON结果:

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

在浏览器控制台上,我看到此错误: TypeError:a未定义 cal-hea .... min.js(第8行,第30282栏)(在cal-heatmap.min.js中)

我将REST调用中的JSON保存为.json文件,并使用此文件测试了cal-HeatMap。在这种情况下,它可以正常工作。这是我的代码的静态版本:

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"
}
);

testdata.json文件如下所示(与上面相同):

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

结果如下(可以): enter image description here

我在这里缺少什么?任何帮助或hoint表示赞赏。

1 个答案:

答案 0 :(得分:0)

好吧,我终于发现了我的代码问题 - 这个问题的答案相当明显。当我使用xhr.get的异步REST调用时,我必须在回调中创建HeatMap对象。否则,在创建HeatMap对象时,数据尚不可用。

正确的代码如下所示:

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
                });
    }
})