Avatar billede Xelot Juniormester
29. november 2020 - 00:46 Der er 1 kommentar og
1 løsning

Google Charts via Ajax / Jquery

Jeg er totalt Java-Noob, så har behov for lidt hjælp.

Vil gerne vise nogen diagrammer via Google Charts.

Har også fået det til at virke som det skal - men pludselig besluttede jeg mig for at køre det hele over Jquery / Ajax - og så virker mine diagrammer pludselig ikke længere :/

Her er mit diagram:


  <script type="text/javascript">
            google.charts.load("current", {packages:["corechart"]});
            google.charts.setOnLoadCallback(drawChart);
            function drawChart() {
              var data = google.visualization.arrayToDataTable([
              <? echo $chartDataDonut; ?>
              ]);

              var options = {
                title: 'Mit forbrug',
                pieHole: 0.4,
                curveType: 'function',
                legend: { position: 'bottom'},
                backgroundColor: { fill:'transparent' },
                chartArea: {left:20, top:44,'width': '90%', 'height': '50%'},
                is3D: true,
                series: {
                  0: { color:'#8DB596' }
                },
              };

              //var chart = new google.visualization.PieChart(document.getElementById('donutchart'));
              var chart = new google.visualization.<? echo $chartType; ?>(document.getElementById('dynamicChart<? echo $cmp; ?>'));
              chart.draw(data, options);
            }
          </script>

<div id="dynamicChart<? echo $cmp; ?>" style=" width: 100%; max-width: 900px; height:100%; max-height: 900px; "></div>


Bemærk at variablerne bliver leveret via PHP - hvilket fungerer fint, men ikke er kønt. Lærer stadig JS, så det skal nok komme :)

Jeg henter mit diagram via Ajax med følgende:


<script>
function getGchart() {
  if (str.length == 0) {
    document.getElementById("chart").innerHTML = "";
    return;
  } else {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
      if (this.readyState == 4 && this.status == 200) {
        document.getElementById("chart").innerHTML = this.responseText;
      }
    };
    xmlhttp.open("GET", "getChart.php", true);
    xmlhttp.send();
  }
}
</script>

<div id="chart"></div>



Der er ikke nogen fejlbeskeder i Console, så jeg har svært ved at gennemskue hvad problemet er.. Uanset hvad jeg prøver, så vises diagrammet bare ikke når det loades igennem Jquery / Ajax.. og det skal jeg da ha' 😄


Har du et forslag ?
Avatar billede keysersoze Guru
29. november 2020 - 18:05 #1
Hvor kalder du getGchart? Hvad er str? Hvad returnerer du og hvad forventer du skal ske med div id=chart?
Avatar billede Xelot Juniormester
30. november 2020 - 14:31 #2
Jeg har fundet ud af at Ajax + Jquery ikke nødvendigvis er løsningen.

Jquery.Load er nok for mig - og sjovt nok bliver Google Charts hentet som det skal når man bruger Jquery alene 🎉

Min løsning blev følgende:


<script>
$(document).ready(function(){
  $("button").click(function(){ // Når formularen er sendt, gør følgende

    $("#meterDataResults").load("getChart.php");
  });
});
</script>
<div id="meterDataResults"></div>


Koden er også lidt mere strømlinet i forhold til Ajax-koden.

Tak for input keysersoze 👍
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester