1

长期聆听者,第一次来电者。不太擅长ajax。大概我在这里做一些非常密集的事情:

尝试运行从 ajax 响应返回的 html 的 google 可视化,但即使我可以在 firebug 的 xhr 响应中看到代码,从 ajax 页面加载时它也不会运行。

直接访问 response2.php?var=X ,它工作得很好,所以大概输出的代码本身没有问题。

(我已经在 ajax 页面的标题和 response2.php 之间移动了 jsapi 和 google.load(visualization),但都没有成功)

ajax 调用

$.ajaxSetup ({
    cache: false
});

$.ajax ({
    type: "GET",
    url: "return2.php",
    data: "council=Leeds City Council",
    dataType: "html",
    success: function (responseText) { 
      document.getElementById('result').innerHTML = responseText;
    }
});

返回2.php

<?php
$docKey = "0Aqk6sC3LBlfjdHUxRDIycjlSM3NvX0JCWnhxUjRUbFE";
$docQuery = $_GET['council'];
?>
<script type="text/javascript">
function drawVisualization() {
google.visualization.drawChart({
   "containerId": "councilViz",
   "dataSourceUrl": "http://spreadsheets.google.com/a/google.com/tq?key=<?php echo   $docKey; ?>",
   "query":"SELECT A,B,C WHERE A CONTAINS '<?php echo $docQuery; ?>'",
   "chartType": "Table",
   "options": {
      "width": 560,
      "height" : 200
   }
 });
}
google.setOnLoadCallback(drawVisualization);
</script>
<div id="councilViz">
<?php echo $docQuery; ?>
</div>

response2.php 获取 GET 变量,运行 google 电子表格 api 查询并返回以下代码:

阿贾克斯响应

<script type="text/javascript">
  function drawVisualization() {
    google.visualization.drawChart({
   "containerId": "councilViz",
   "dataSourceUrl": "http://spreadsheets.google.com/a/google.com/tq?key=0Aqk6sC3LBlfjdHUxRDIycjlSM3NvX0JCWnhxUjRUbFE",
   "query":"SELECT A,B,C WHERE A CONTAINS 'Leeds City Council'",
   "chartType": "Table",
   "options": {
      "width": 560,
      "height" : 200
   }
 });
  }
  google.setOnLoadCallback(drawVisualization);
</script>
<div id="councilViz">
Leeds City Council</div>

尽我所能,当代码被ajax调用时,我无法绘制表格。我可以看到结果,但可视化脚本中什么也没有。

非常感谢,

一个

4

1 回答 1

0

您需要创建 div 以将返回的 html 插入其中,使用 .innerHTML 将您的 html 插入该 div。

然后使用 .appendChild 将 div 附加到 dom 中的目标。

通过设置元素的 innerHTML 属性添加的脚本不会被执行。

函数 addScript(responseText)

    {
        var newdiv = document.createElement('div');
        newdiv.innerHTML = 响应文本;
        document.getElementById('target').appendChild(newdiv);
    }

于 2012-04-09T17:21:37.333 回答