在ajaxComplete之后加载javascript

时间:2015-07-13 11:53:01

标签: javascript jquery ajax google-visualization

我正在尝试通过AJAX添加Google图表,但在Firebug中我得到了:

ReferenceError: google is not defined

我发送的AJAX看起来像这样:

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
    google.load("visualization", "1", {packages:["corechart"]});
    google.setOnLoadCallback(drawVisualization);

    etc etc...

</script>

我假设第一个脚本没有加载。我该如何解决这个问题? 我试过在ajaxComplete之后加载,但我无法让它工作。

1 个答案:

答案 0 :(得分:1)

如果您想等到库加载,您可以定期检查它是否已加载,当您检测到它时,您可以执行您的代码。我在这个answer上解决了我的解决方案。

添加Javascript函数进行检查:

function whenAvailable(name, callback) {
    var interval = 10; // ms
    window.setTimeout(function() {
        if (window[name]) {
            callback(window[name]);
        } else {
            window.setTimeout(arguments.callee, interval);
        }
    }, interval);
}

然后添加一个代码,检查您是否加载了Google,并在加载后从内部运行代码

whenAvailable("google", function(t) {
    google.load("visualization", "1", {packages:["corechart"]});
    google.setOnLoadCallback(drawVisualization);

    etc etc...
});

您可以自定义间隔。这是一个有用的模式。