2013-10-01 2 views
5

Googleのチャートで問題が発生しましたので、jsファイルをロードできない場合は正常に失敗しています。以下はうまくいきます:Google jsapiを非同期でロードしています

<script type="text/javascript" src="https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22visualization%22%2C%22version%22%3A%221.0%22%2C%22packages%22%3A%5B%22corechart%22%5D%7D%5D%7D"></script> 

問題は、スクリプトがタイムアウトするのを待っている間に他のコードが実行されるのをブロックすることです。

負荷以下のコード、

<script type="text/javascript"> 
$.ajax({ 
    url: 'https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22visualization%22%2C%22version%22%3A%221.0%22%2C%22packages%22%3A%5B%22corechart%22%5D%7D%5D%7D', 
    dataType: 'script', 
    cache: true, // otherwise will get fresh copy every page load 
    success: function() { 
     google.load("visualization", "1", {packages:["corechart"]}); 
    } 
}); 
</script> 

それエラー、私は、このような

var data = new google.visualization.DataTable(); 

として可視化を使用しようと、私は可能やっているか、我々は問題で立ち往生しているものですGoogleが問題を抱えている場合は、jsファイルがタイムアウトして移動するまで待つだけです。

ありがとうございます!

答えて

1

スクリプトはAJAX経由でダウンロードされた後は実行されません。あなたは$.getScript()を使用したい:

$.ajaxSetup({ cache: true }); 
var url = 'https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22visualization%22%2C%22version%22%3A%221.0%22%2C%22packages%22%3A%5B%22corechart%22%5D%7D%5D%7D'; 
$.getScript(url, function() { 
    google.load("visualization", "1", {packages:["corechart"]}); 
}); 
+0

申し訳ありませんが、スタックオーバーフローの上に掲示する新しい:ここ

はJSFiddleとコードスニペットです。私はそれが私にメールすると思った。それから私はその質問を忘れてしまった。 残念ながら、drawChartコードは一部のページと後でのみ発生するため、私たちが必要な直前にスクリプトをロードしようとしないと、これらのページが遅くなることはないと思います。 –

4

あなたが成功した場合にgoogle.load関数を呼び出しているので、?autoload=...ものは冗長です。

だけ//www.google.com/jsapiにあなたのURLを変更し、あなたのdrawChartコードがときcorechart完了と呼ばれていることを確認するloadコールに'callback'を追加します。 http://jsfiddle.net/c56pC/2/

<script type="text/javascript"> 
$.ajax({ 
    url: '//www.google.com/jsapi', 
    dataType: 'script', 
    cache: true, 
    success: function() { 
     google.load('visualization', '1', { 
      'packages': ['corechart'], 
      'callback': drawChart 
     }); 
    } 
}); 
</script> 
+0

申し訳ありません、スタックオーバーフローで投稿しています。私はそれが私にメールすると思った。それから私はその質問を忘れてしまった。 残念ながら、drawChartコードは一部のページと後でのみ発生するため、私たちが必要な直前にスクリプトをロードしようとしないと、これらのページが遅くなることはないと思います。 –

関連する問題