2

こんにちは。事前にご協力いただきありがとうございます。

作成した顧客レポート エリアがあり、Google チャートを使用してデータを表示していますが、これはすべてうまく機能しており、正常に動作しています (下の画像を参照)。私が抱えている問題は、管理者が別のクライアントを選択するために使用するドロップダウン ボックスが、ajax を使用してページを変更することです。

jQuery:

$("#adminCall").live("submit", function() {
    var fields = $(this).serialize();
        $.ajax({
                  type: 'POST',
                  url: '/ajax/admin-calls-ajax.php',
                  data: fields,
                  success: function(data)   
                  {     
                     $("#results").html(data);                   
                  }
            });
    return false;
});

呼び出される PHP ファイルは、正しく表示されるファイルの正確なレプリカですが、クライアント ID を post 変数として渡します。

Google Charts コード (両方のファイル)

<script type="text/javascript">
  function drawVisualization() {
    // Create our data table out of JSON data loaded from server.
  var data = new google.visualization.DataTable(<?=$jsonTable?>);
  new google.visualization.ColumnChart(document.getElementById('visualization')).
        draw(data, {curveType: "function",
                    isStacked: true,
                    width: 780, height: 300,
                    fontSize: 10,
                    vAxis: {maxValue: <?php echo $maxval; ?>, minValue: 0}}
            );
  }
  google.setOnLoadCallback(drawVisualization);
  </script>
  <div id="visualization" style="width: 780px; height: 300px;"></div>

AJAX 呼び出しの後に JavaScript が起動しません。それが事実であることはわかっていますが、JSON は AJAX によって呼び出される PHP ファイルによって生成されるため、論理的な方法を考えることができません。

誰かアドバイスはありますか?

グラフが正常に動作しているイメージ

4

1 に答える 1

1

ajax呼び出しの前後に、ajaxリクエストが通過しますか(Chromeドキュメントインスペクター>>ネットワークを確認してください)。もしそうなら

ajax コードを送信する php ファイルで に置き換えgoogle.setOnLoadCallback(drawVisualization);てみてくださいdrawVisualization()

google.setOnLoadCallback(drawVisualization)drawVisualizationページがロードされたときに呼び出されるメソッドをキューに入れます。通常の Web リクエスト/レスポンス フローでは、このメソッドは、すべてのページ要素 (スクリプト、スタイルシート イメージなど) が読み込まれた後に呼び出されます。

ただし、これを ajax 経由で呼び出すと、ページは既に読み込まれており、この呼び出しは行われません。したがって、関数を直接呼び出すdrawVisualization()必要があります。

于 2013-08-12T09:37:38.240 に答える