Google 图表当前配置为根据获取请求。目标是根据用户从下拉菜单中的选择通过 AJAX 动态更新此图表。
核心问题源于图表对 AJAX 更新缺乏响应。 JSON 格式不匹配可能会阻止 Google 渲染图表。
PHP 代码(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); ?>
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>
主要区别:
以上是如何根据下拉菜单中的用户输入使用 AJAX 动态更新 Google 图表?的详细内容。更多信息请关注PHP中文网其他相关文章!