2016-12-06 103 views
1

我有從JSON文件中提取數據,然後我有一個JavaScript文件繪製圖形。從JSON獲取價值到JavaScript

這裏是JSON文件:

enter image description here

這裏是我的JavaScript代碼來繪製圖形:

$(document).ready(function(){ 
    google.charts.load('current', {'packages': ['corechart']}); 
    //alert('aa00'~ 
    $('.error').hide(); 
    $(".buttonSala").click(function() { 
    // validate and process form here 
    $('.error').hide(); 
    var canal = $("#canalSala option:selected").val(); 
    var datai = $("#datainisala").val(); 
    var dataf = $("#datafimsala").val(); 

    //alert(canal); 
    // Send the data using post 
    var posting = $.post("getSala.php", { canal: canal, dataini: datai, datafim: dataf }); 

    // Put the results in a div 
    posting.done(
     function(data) { 
     // Set a callback to run when the Google Visualization API is loaded. 

     var jsonData = JSON.parse(data).channels[canal].values; 
     google.charts.setOnLoadCallback(function() { 
      var dataArray = [["ts", 'values']]; 

      for (var i = 0; i < jsonData.length; i++) { 
      var tempArray = [jsonData[i].ts, parseFloat(jsonData[i].value.replace(",", "."))]; 
      dataArray.push(tempArray); 
      } 

      // Create our data table out of JSON data loaded from server. 
      var data = google.visualization.arrayToDataTable(
      dataArray 
     ); 

      var options = { 
      hAxis: {title: "Data/Hora", titleTextStyle: {color: "#333"}}, 
      vAxis: {title: "Temperatura", titleTextStyle: {color: "#333"}} 
      }; 

      // Instantiate and draw our chart, passing in some options. 
      var chart = new google.visualization.AreaChart(document.getElementById('chart_divsala')); 
      chart.draw(data, options); 
     }); 
     }); 
    return false; 
    }); 
}); 

正如你所看到的圖表中畫出正確地將:

enter image description here

在這部分:

var dataArray = [['ts', 'values']]; 

它使用ts數據進行繪製,「值」出現在圖上,左側和線描述上。我如何訪問JSON proprety「chname」來使用該信息填充圖形描述?在這種情況下「oxigénio(%)沒有內部做pipo德馬德拉4」。

我用盡了一切,我不能讓它的工作......

回答

0

您可以response.channels[canal].info.chname,其中obj是從JSON文件的整個對象訪問JSON財產chname

因此,替換這些行:

var jsonData = JSON.parse(data).channels[canal].values; 
google.charts.setOnLoadCallback(function() { 
    var dataArray = [["ts", 'values']]; 

與此:

var response = JSON.parse(data); 
var jsonData = response.channels[canal].values; 
var desciption = response.channels[canal].info.chname; 
google.charts.setOnLoadCallback(function() { 
    dataArray = [["ts", desciption ]]; 
+0

它不工作,該圖沒有像畫那... – Emerenciana

+0

我沒有注意到你正在用'jsonData = jsonData.channels [2] .values;'覆蓋'jsonData'。我更新的答案應該可以工作 – asemahle

+0

仍然無法正常工作。我更新了我的腳本以匹配我更新的腳本,因爲我使用了一些變量來改變獲取json數據的curl。但其基本相同。而不是response.channels [2] .info.chname我嘗試了response.channels [canal] .info.chname,因爲那是包含當前運河的變量的名稱,但仍然沒有運氣@asemahle – Emerenciana

0

當您使用的dataType JSON阿賈克斯。數據返回到對象。在我的情況下,我添加成功以獲取請求成功時的數據。例如:

$.ajax({ 
    url: "getData.php", 
    type: 'GET', 
    dataType : "json", 
    success: function (data) { 
    data.forEach(function(object){ 
     //your code logic here 

    }); 
    } 
}); 
+0

你可能沒得到什麼,我想做的事... – Emerenciana