2014-06-13 54 views
0

我正在使用使用javascript的圖library。在用另一個ajax腳本獲取數據之後,我必須運行這個腳本。但是,當我使用的腳本來自ajax的調用函數post響應

var request, response; 

    var newUrl = url + '/thermometer/getLastHourData'; 
    var data = $.ajax({ 
        url: newUrl, 
        data: request, 
        dataType: "json", 
        method: "post", 
        success: function(data) { 
         drawGraph(); 
         return data; 
        }, 
        error: function() { 
         alert('Error occured'); 
        } 
      }); 

另外,drawGraph功能

google.load("visualization", "1"); 

    // Set callback to run when API is loaded 
    google.setOnLoadCallback(drawVisualization); 

    // Called when the Visualization API is loaded. 
    function drawVisualization() { 
     // Create and populate a data table. 
     var data = new google.visualization.DataTable(); 
     data.addColumn('datetime', 'time'); 
     data.addColumn('number', 'Function A'); 
     data.addColumn('number', 'Function B'); 

     function functionA(x) { 
      return Math.sin(x/25) * Math.cos(x/25) * 50 + (Math.random()-0.5) * 10; 
     } 

     function functionB(x) { 
      return Math.sin(x/50) *50 + Math.cos(x/7) * 75 + (Math.random()-0.5) * 20 + 20; 
     } 

     // create data 
     var d = new Date(2010, 9, 23, 20, 0, 0); 
     for (var i = 0; i < 100; i++) { 
      data.addRow([new Date(d), functionA(i), functionB(i)]); 
      d.setMinutes(d.getMinutes() + 1); 
     } 

     // specify options 
     var options = { 
      "width": "100%", 
      "height": "350px" 
     }; 

     // Instantiate our graph object. 
     var graph = new links.Graph(document.getElementById('mygraph')); 

     // Draw our graph with the created data and options 
     graph.draw(data, options); 
    } 

(我沒有改變什麼,我需要因爲檢查代碼運行是否正常)

drawGraph開始等待爲某個庫加載google.com,但是當我使用函數drawGraph而不從ajax函數調用時,它的工作方式與我在開頭提到的鏈接一樣。

如何從ajax中調用這個圖函數沒有問題?

+0

你嘗試調用'google.load(「visualization」,「1」);'而不是'drawGraph();'? – Cristian

+0

是的,我已經嘗試過。另外主要的問題是調用該函數。 – irukeru

回答

1

我完全不清楚你的問題在這裏。但是,如果您有與AJAX的異步性問題,只需修改你的Ajax調用是這樣的:

$.ajax({ 
     url: newUrl, 
     data: request, 
     async: false, 

etc, etc, etc   

希望這有助於。

+0

我只是沒有想到這一點。該解決方案已解決我的問題。非常感謝。 – irukeru