d3.json(url,callback)与django无法正常工作

时间:2017-12-05 21:16:58

标签: javascript django d3.js nvd3.js

我创建了一个试图显示nv.d3.js饼图的DJango / ReactJS网站。当我添加代码以显示饼图,将数据数组直接传递到代码中时,饼图正确地显示在网站上。但是,当我使用d3.json(url, callback)从URL检索JSON(由Django views.py提供)并将其作为数据传递到饼图时,我收到错误。

nvd3代码是:

createPieChart() {
  const node = this.node

  nv.addGraph(function() {
    var chart = nv.models.pieChart()
      .x(function(d) { return d.label })
      .y(function(d) { return d.value })
      .showLabels(true);

    d3.select(node)
      .datum(getPieData())
      .transition().duration(350)
      .call(chart);

    return chart;
  })
}

getPieData()功能是:

function getPieData() {

 // return (d3.json(url, function(error, rawData) {
 //           if (error) {
 //               console.log("error = " + error)
 //               return;
 //           }
 //           else{
 //             return rawData;
 //           }
 //         }
 //       )
 // )
   return [{"label": "R", "value": 822}, {"label": "H", "value": 1}];
 }

请注意,在上面的代码片段中,我注释掉了有问题的代码。我上面的回报是有效的。现在,如果我转到Django提供的上面的URL,它会在浏览器中返回与此类似的以下数据(并且在控制台中,我在传入数据后添加了一个| safe过滤器):

[{"label": "R", "value": 822}, {"label": "H", "value": 1}]

我得到的错误是:

  

未捕获类型错误:data.map不是函数

我希望这会将数据传递给addGraph函数并正确显示图表,就像我将数据直接传递给图形函数一样......

我尝试在rawData.map()函数中返回getPieData,但这也不起作用。我得到了同样的错误。

0 个答案:

没有答案