Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich ein Google-Diagramm mithilfe von AJAX basierend auf Benutzereingaben aus einem Dropdown-Menü dynamisch aktualisieren?

Wie kann ich ein Google-Diagramm mithilfe von AJAX basierend auf Benutzereingaben aus einem Dropdown-Menü dynamisch aktualisieren?

Linda Hamilton
Freigeben: 2024-12-07 16:10:16
Original
643 Leute haben es durchsucht

How can I dynamically update a Google Chart using AJAX based on user input from a dropdown menu?

Aktualisierung von Google Charts basierend auf Benutzereingaben über AJAX

Problem

Ein Google Chart ist derzeit so konfiguriert, dass es Daten aus einer bestimmten Tabelle basierend auf a abruft GET-Anfrage. Das Ziel besteht darin, dieses Diagramm dynamisch über AJAX zu aktualisieren, basierend auf der Auswahl eines Benutzers aus einem Dropdown-Menü.

Analyse

Das Kernproblem ergibt sich aus der mangelnden Reaktion des Diagramms auf AJAX-Updates . Eine Nichtübereinstimmung des JSON-Formats verhindert möglicherweise, dass Google das Diagramm rendert.

Lösung

PHP-Code (getdata.php):

<?php
require("dbconnect.php");

$db = mysql_connect($server, $user_name, $password);
mysql_select_db($database);

$sqlQuery = "SELECT * FROM ".$_GET['q']." WHERE Date(Time + INTERVAL 10 HOUR) = Date(UTC_TIMESTAMP() + INTERVAL 10 HOUR)";
$sqlResult = mysql_query($sqlQuery);

$rows = array();
$table = array();

// Define column labels
$table['cols'] = array(
    array('label' => 'Time', 'type' => 'string'),
    array('label' => 'Wind_Speed', 'type' => 'number'),
    array('label' => 'Wind_Gust', 'type' => 'number')
);

// Populate data rows
while ($row = mysql_fetch_assoc($sqlResult)) {
    $temp = array();
    $temp[] = array('v' => (string) $row['Time']);
    $temp[] = array('v' => (float) $row['Wind_Speed']);
    $temp[] = array('v' => (float) $row['Wind_Gust']);
    $rows[] = array('c' => $temp);
}

$table['rows'] = $rows;

echo json_encode($table);
?>
Nach dem Login kopieren

HTML/Javascript:

<!DOCTYPE>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <title>Wind Graph</title>
    <script src="http://www.google.com/jsapi"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script>
      google.load('visualization', '1', {
        callback: function () {
          // Add event listener to select element
          $("#users").change(drawChart);

          function drawChart() {
            $.ajax({
              url: 'getdata.php',
              // Use value from select element
              data: 'q=' + $("#users").val(),
              dataType: 'json',
              success: function (responseText) {
                // Use response from PHP for data table
                var data = new google.visualization.DataTable(responseText);
                new google.visualization.LineChart(document.getElementById('visualization')).
                draw(data, {
                  curveType: 'none',
                  title: 'Wind Chart',
                  titleTextStyle: {
                    color: 'orange'
                  },
                  interpolateNulls: 1
                });
              },
              error: function(jqXHR, textStatus, errorThrown) {
                console.log(errorThrown + ': ' + textStatus);
              }
            });
          }
        },
        packages: ['corechart']
      });
    </script>
  </head>
  <body>
Nach dem Login kopieren

Schlüssel Unterschiede:

  • Das Skript getdata.php gibt jetzt Daten im JSON-Format zurück, das mit Google Charts kompatibel ist.
  • Die h-Achse und die v-Achse werden stattdessen nur einmal in den Diagrammoptionen angegeben des zweimaligen Erscheinens.
  • Die Option async: false wurde entfernt, um unerwartetes Verhalten zu verhindern.
  • Inline Es werden keine Ereignishandler verwendet, stattdessen wird ein jQuery-Änderungs-Listener hinzugefügt.

Das obige ist der detaillierte Inhalt vonWie kann ich ein Google-Diagramm mithilfe von AJAX basierend auf Benutzereingaben aus einem Dropdown-Menü dynamisch aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage