2017-07-31 174 views
0

下面是代碼生成條形圖使用C3 JS庫C3 JS,如何訪問URL呼叫收到JSON數據

var chart = c3.generate({ 
    bindto: '#barchart', 
    data: { 
     url: './API/get_bar_chart_data.php', 
     mimeType: 'json', 
     type: 'bar', 
     keys: { 
      x: 'category', // it's possible to specify 'x' when category axis 
      value: [ 'number'] 
      }, 
     onclick: function (d, i) { 

           console.log(chart.categories()[d.index]); 

           onclick_barchart(); 
           } 
     }, 
    bar: { 
     width: { 
      ratio: 0.5 // this makes bar width 50% of length between ticks 
       } 
     },  
    axis: { 
     x: { 
      type: 'category' // this needed to load string x value 
     } 
    } 

}); 

在上面的代碼我從URL JSON格式獲取數據。

現在點擊我想將這個完整的json接收到onclick_barchart()函數。

+0

你從哪裏獲得這些數據?是d嗎?這是收到的數據?建議您閱讀文檔。一旦你獲取它,只需將數據作爲參數傳遞給click函數即可。 –

+0

我不知道數據在哪裏收到,d是一些內部變量,它給出索引,繪製圖表的類別 – abhi

+0

**我不知道數據收到的地方**,快樂編碼!這就是爲什麼我告訴你看到文檔。你是否? –

回答

0

C3.js將內部格式的數據進行轉換,因此無法獲取收到的數據。

IMO,有2種方式來處理這個。

  • 如果您需要處理收到的數據,可能需要單獨調用。不在C3.js中。

// call api and assign the result in separate variable 
 
var data = call_ajax("./API/get_bar_chart_data.php"); 
 
var chart = c3.generate({ 
 
     data: { 
 
     columns: data 
 
     onclick: function() { 
 
      onclick_barchart(data); 
 
     } 
 
     }, 
 
     ... 
 
    }

  • 或者,通過內部數據變量 訪問轉換後的數據在這種情況下,你需要處理的格式爲您的必要性。

var chart = c3.generate({ 
 
     data: { 
 
     columns: data 
 
     onclick: function() { 
 
      // You can access in outside via 'chart.internal.data.targets' 
 
      // They're same result from .data() API 
 
      // https://naver.github.io/billboard.js/release/latest/doc/Chart.html#data 
 
      onclick_barchart(this.data.targets); 
 
     } 
 
     }, 
 
     ... 
 
    }