2016-12-06 3 views
1

Ich habe Daten aus einer JSON-Datei gezogen, und dann habe ich eine JavaScript-Datei, die ein Diagramm zeichnet. HierHolen Wert von JSON in JavaScript

ist die JSON-Datei:

enter image description here

Hier ist mein JavaScript-Code eine Grafik zu zeichnen:

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

Wie Sie das Diagramm sehen kann, ist ziehen correcly:

enter image description here

In diesem Teil:

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

Es nutzt die TS-Daten zu ziehen, und die „Werte“ ist das, was auf dem Diagramm angezeigt wird, auf der linken Seite, und auf der Linie Beschreibung. Wie kann ich auf die JSON-Property "chname" zugreifen, um die Graphenbeschreibung mit diesen Informationen zu füllen? in diesem Fall "oxygenio (%) no interior do pipo de madeira 4".

Ich habe versucht, alles und ich kann es nicht die Arbeit an ...

Antwort

0

Sie können auf die json Eigenschaft chname mit response.channels[canal].info.chname, wo obj ist das gesamte Objekt aus der JSON-Datei.

So ersetzen Sie diese Zeilen:

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

mit diesem:

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

es nicht funktioniert, wird der Graph nicht wie zeichnen dass ... – Emerenciana

+0

Ich habe nicht bemerkt, dass Sie "jsonData" mit 'jsonData = jsonData.channels [2] .values;' überschreiben. Meine aktualisierte Antwort sollte funktionieren. – asemahle

+0

Funktioniert immer noch nicht. Ich habe mein Skript aktualisiert, damit es mit meinem aktualisierten übereinstimmt, weil ich einige Variablen verwende, um die Locken zu ändern, die die JSON-Daten erhalten. Aber es ist im Grunde dasselbe. Anstelle von response.channels [2] .info.chname habe ich response.channels [canal] .info.chname versucht, da das der Name der Variablen ist, die den aktuellen Kanal enthält, aber immer noch kein Glück @asemahle – Emerenciana

0

Wenn Sie AJAX verwenden, um mit datatype json. Daten kehren in das Objekt zurück. In meinem Fall füge ich Erfolg hinzu, um Daten zu erhalten, wenn sie erfolgreich angefordert werden. Zum Beispiel:

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

    }); 
    } 
}); 
+0

Sie wahrscheinlich nur knapp sein Ziel zu bekommen, was ich ... tun wollte – Emerenciana