2

大家好,提前感谢您的帮助!

我有一个我已经建立的客户报告区域,它使用谷歌图表来显示数据,这一切都很好,工作正常(见下图)。我遇到的问题是管理员用来选择不同客户端的下拉框使用 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 变量传递的文件的精确副本。

谷歌图表代码(在两个文件上)

<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>

javascript 在 AJAX 调用后不会触发,我想我知道应该是这种情况,但由于 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 回答