2014-03-27 25 views
3

data.php將返回:PHP:從數據庫中獲得的數據供應給JQuery的圖表

{name: 'orcamento', data: [14000.00,8500.00,0.00]},{name: 'real', data: [2038.00,120.00,15000.00]},{name: 'desvio', data: [-11962.00,-8380.00,15000.00]} 

我想用這個數據來養活的圖表。如果我鍵入下面的代碼,它工作得很好:

$(document).ready(function(){ 
    var options={ 
     chart: { 
      renderTo:'container', 
      type: 'bar' 
     }, 
     title: { 
      text: 'Total Anual' 
     }, 
     xAxis: { 
      categories: ['Vendas', 'Serviços', 'Outras'] 
     }, 
     series: [{name: 'orcamento', data: [14000.00,8500.00,0.00]},{name: 'real', data: [2038.00,120.00,15000.00]},{name: 'desvio', data: [-11962.00,-8380.00,15000.00]}] 
    }; 
}); 

但下面的代碼不起作用:

$(document).ready(function(){ 
    var options={ 
     chart: { 
      renderTo:'container', 
      type: 'bar' 
     }, 
     title: { 
      text: 'Total Anual' 
     }, 
     xAxis: { 
      categories: ['Vendas', 'Serviços', 'Outras'] 
     }, 
     series: [$.get('data.php')] 
    }; 
}); 

爲什麼?

編輯:我也試過這個沒有運氣:

$(document).ready(function(){ 
    var dados=[]; 
    $.ajax({ 
     url:'data.php', 
     success: function(response){ 
      dados=response 
     } 
    }); 

    var options={ 
     chart: { 
      renderTo:'container', 
      type: 'bar' 
     }, 
     title: { 
      text: 'Total Anual' 
     }, 
     xAxis: { 
      categories: ['Vendas', 'Serviços', 'Outras'] 
     }, 
     series: [dados] 
    }; 
}); 

EDIT2:也試過以下,但我得到一個空的圖表:

$(document).ready(function(){ 
    var dados=[]; 

    $.ajax({ 
     url:'data.php', 
     success: function(response){ 
      dados=response 
     }, 
     async:false 
    }); 

    var options={ 
     chart: { 
      renderTo:'container', 
      type: 'bar' 
     }, 
     title: { 
      text: 'Total Anual' 
     }, 
     xAxis: { 
      categories: ['Vendas', 'Serviços', 'Outras'] 
     }, 
     series: [dados] 
    }; 

    var chart = new Highcharts.Chart(options); 
}); 

在JSONLint,我得到的錯誤:

Parse error on line 1: 
{ name: 'orcamento', 
-----^ 
Expecting 'STRING', '}' 
+0

首先,你需要返回有效的JSON。看起來你需要在整個JSON結構中使用一個數組包裝器'[]'。其次,您可以將異步結果加載到您想要執行的變量中,您需要將成功回調中的options.series設置爲'$ .get()' –

+0

謝謝,我檢查了JSONLint,得到了:Parse error 1號線: {名稱: 'orcamento', -----^ 期待 'STRING', '}' –

回答

1

在你的編輯問題,dados變種可能不是當你定義的選項設置。因爲ajax響應是異步的。嘗試編輯這樣的:

$(document).ready(function(){ 
    var dados=[]; 
    var options = {}; 
    $.ajax({ 
     url:'data.php', 
     success: function(response){ 
      dados=$.parseJSON(response); // EDITED 
      options={ 
       chart: { 
        renderTo:'container', 
        type: 'bar' 
       }, 
       title: { 
        text: 'Total Anual' 
       }, 
       xAxis: { 
        categories: ['Vendas', 'Serviços', 'Outras'] 
       }, 
       series: [dados] 
      }; 
      var chart = new Highcharts.Chart(options); 
     } 
    }); 
}); 

在PHP中JSON的結果,把[]是這樣的:

[{name: 'orcamento', data: [14000.00,8500.00,0.00]},{name: 'real', data: [2038.00,120.00,15000.00]},{name: 'desvio', data: [-11962.00,-8380.00,15000.00]}]

+0

謝謝,我試過你的建議,我得到了Uncaught Highcharts錯誤#13:這沒有意義。 –

+0

圖表函數的調用在哪裏?在ajax成功之後檢查這是否是調用。 – gabrieloliveira

+0

請參閱我上面的edit2。 –

0

$ .get('data.php')將忽略返回結果。 請參閱https://api.jquery.com/jQuery.get/

您必須使用回調。

乾杯, Ĵ

+0

同意,也確保了輸出頭設置爲'應用程序/ json'在data.php – mituw16

+0

謝謝,我改變了我的腳本,但仍然沒有得到任何東西:var dados = []; \t $ .ajax({\t \t url:'data。PHP」, \t \t成功:功能(響應){ \t \t \t dados =響應 \t \t} \t}); \t \t變種選項= { \t \t圖表:{ \t \t \t renderTo: '容器', \t \t \t類型: '欄' \t \t}, \t \t標題:{ \t \t \t文本: 'Total Anual' \t \t}, \t \t x軸:{ \t \t \t類:[ 'Vendas', 'SERVICOS', 'Outras'] \t \t}, \t \t系列:[dados] \t \t }; \t \t var chart = new Highcharts.Chart(options); –