1

長年のリスナー、初めての発信者。ajax はあまり得意ではありません。おそらく私はここで非常に密な何かをやっています:

ajax 応答から html で返される Google ビジュアライゼーションを実行しようとしていますが、firebug の xhr 応答にコードが表示されていても、ajax ページからロードすると実行されません。

response2.php?var=X に直接アクセスすると問題なく動作するので、出力されるコード自体には問題ないと思われます。

(jsapi と google.load(visualization) を ajax ページのヘッダーと response2.php の間に移動しましたが、いずれにしても成功しませんでした)

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;
    }
});

return2.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 クエリを実行して、次のコードを返します。

ajax レスポンス

<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

返された html を挿入する div を作成する必要があります。.innerHTML を使用して html をその div に挿入します。

次に、.appendChild を使用して div を dom のターゲットに追加します。

要素の innerHTML プロパティを設定して追加されたスクリプトは実行されません。

関数 addScript(応答テキスト)

    {
        var newdiv = document.createElement('div');
        newdiv.innerHTML = responseText;
        document.getElementById('target').appendChild(newdiv);
    }

于 2012-04-09T17:21:37.333 に答える