2012-04-09 91 views
1

長時間監聽器,第一次調用者。不太擅長ajax。想必我在這裏做的事情非常密集:運行通過ajax加載的谷歌可視化(javascript)

試圖運行一個從ajax響應中返回html的谷歌可視化,但即使我可以在firebug的xhr響應中看到代碼,它在加載時不會運行ajax頁面。

直接訪問response2.php?var = X,它完美地工作,所以推測它本身沒有問題。

(我搬到JSAPI和AJAX頁面的頁眉和response2.php之間的google.load(可視化),但沒有成功無論哪種方式)

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變量,運行一個谷歌SPRE adsheets 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的表格繪製。我可以看到結果,但沒有任何可視化腳本。

非常感謝,

一個

回答

0

您需要創建div來插入返回的HTML到,使用.innerHTML插入你的HTML到該專區。

然後使用.appendChild將div附加到dom中的目標。

通過設置元素的innerHTML屬性添加的腳本不會被執行。

 
function addScript(responseText) 

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

+0

傑森,謝謝你的回答。 我應該指出Ajax頁面確實包含用於碼一個div(#result)被放置到,像這樣:

<腳本類型= 「文本/ JavaScript的」> ... 要寫信給我,我是否簡單地將「成功」功能與您的解決方案交換,將「目標」更改爲「結果」? – andrew 2012-04-09 18:10:08

+0

是的,與結果交換目標並在響應中運行addScript函數。 – 2012-04-15 22:32:40