1

我正在使用 Google 图表 api 来绘制表格图表。
我正在ajax以这种方式使用 jquery 拨打电话 -

$('#table_div').load('getAnalysis.aspx');

在这里,我<div id=table_div"></div>使用load. 现在返回以下 html 文本 - jquery
getAnalysis.aspx

<div id="iqr_table"></div>
<script type='text/javascript'>
    google.load('visualization', '1', { packages: ['table'] });
    google.setOnLoadCallback(iqr_drawTable);
    function iqr_drawTable() {
      var iqr_data = new google.visualization.DataTable();
      iqr_data.addColumn('string', 'Q #');          
      iqr_data.addColumn('string', 'My Answer');
      iqr_data.addColumn('string', 'Correct Answer');
      iqr_data.addRows([
    ['1', 'A', 'C', ],
    ['2', '', 'C,D', ],
    ['3', 'C', 'C', ],
    ['4', 'D', 'D', ],
    ['5', 'C,D', 'A,B', ],
   ]);

      var table = new google.visualization.Table(document.getElementById('iqr_table'));
      table.draw(iqr_data, { showRowNumber: true });
}
</script>

我已经使用开发人员工具中内置的谷歌浏览器检查了正确进行 ajax 调用并且正确接收了 html 文本,还<script>评估了接收到的内容中的标签。

但是在评估<script>标签后立即出现问题,并且<body>从页面中删除并且没有显示任何内容。
我不明白错误在哪里。

PS:我已经在主页中包含了所有必需的脚本文件,所以请不要指出这一点。

4

2 回答 2

1

好的,问题出在脚本中:

<script type='text/javascript'>
    google.load('visualization', '1', {
        packages: ['table']
    });
    google.setOnLoadCallback(iqr_drawTable);

    var iqr_data = { }; // define it here.

    function iqr_drawTable() {
        /*var*/ iqr_data = new google.visualization.DataTable(); // iqr_data is defined here.
        iqr_data.addColumn('string', 'Q #');
        iqr_data.addColumn('string', 'My Answer');
        iqr_data.addColumn('string', 'Correct Answer');
        iqr_data.addRows([
            ['1', 'A', 'C', ],
            ['2', '', 'C,D', ],
            ['3', 'C', 'C', ],
            ['4', 'D', 'D', ],
            ['5', 'C,D', 'A,B', ], ]);

        var table = new google.visualization.Table(document.getElementById('iqr_table'));
        table.draw(iqr_data, {    // and isn't available here.
            showRowNumber: true
        });
    }
</script>

虽然我不知道为什么<body>需要从页面中删除......但这是我能注意到的问题......

于 2012-05-19T16:45:15.487 回答
0

想通了 - Google API 说要先初始化负载。所以也许将 google.load 函数排除在 AJAX 获取的脚本之外,

google.load('visualization', '1', {'packages': ['annotatedtimeline']}); 

$(document).ready(function(){               
// Get TIER1Tickets                 
$('#table_div').load('getAnalysis.aspx');

我得到的getAnalysis.aspx是这个(假设谷歌已经初始化并加载了包) -

<div id="iqr_table"></div>
<script type='text/javascript'>    
  var iqr_data = new google.visualization.DataTable();
  iqr_data.addColumn('string', 'Q #');          
  iqr_data.addColumn('string', 'My Answer');
  iqr_data.addColumn('string', 'Correct Answer');
  iqr_data.addRows([
  ['1', 'A', 'C', ],
  ['2', '', 'C,D', ],
  ['3', 'C', 'C', ],
  ['4', 'D', 'D', ],
  ['5', 'C,D', 'A,B', ],   

  var table = new google.visualization.Table(document.getElementById('iqr_table'));
  table.draw(iqr_data, { showRowNumber: true });
}

于 2012-05-22T11:13:03.613 回答