AJAX リクエストによるユーザー入力に基づいて Google チャートを再描画
目標は、選択したテーブルから取得したデータで Google チャートをシームレスに更新することですAJAX を使用したドロップダウン メニュー。ただし、jQuery $ 関数が定義されていないため、エラーが発生します。
問題分析:
元のコードは、URL で GET リクエストを使用して、チャート。ただし、データを AJAX 経由で動的に取得する必要がある場合、スクリプト構造を変更しないと必要なデータにアクセスできません。
ソリューションの実装:
ウェブページ変更:
AJAXリクエスト:
PHP ファイル (getdata.php):
チャート再描画ロジック:
追加の考慮事項:
例コード:
HTML/JavaScript:
$(document).ready(function() { $("#users").change(drawChart); function drawChart() { $.ajax({ url: 'getdata.php', data: 'q=' + $("#users").val(), dataType: 'json', success: function(responseText) { 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); } }); } });
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(); $table['cols'] = array( array('label' => 'Time', 'type' => 'string'), array('label' => 'Wind_Speed', 'type' => 'number'), array('label' => 'Wind_Gust', 'type' => 'number') ); 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); ?>
以上がAJAX とユーザーが選択したテーブルを使用して Google チャートを動的に再描画する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。