首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异步加载Google jsapi

异步加载Google jsapi
EN

Stack Overflow用户
提问于 2013-10-02 05:27:44
回答 2查看 6.5K关注 0票数 6

今天Google charts出现了一个问题,所以如果我们不能加载js文件,我们会尝试优雅地失败。下面的代码运行良好:

代码语言:javascript
复制
<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>

问题是,它将阻止运行其他代码,因为它正在等待脚本超时。

加载下面的代码,

代码语言:javascript
复制
<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>

但是当我尝试使用可视化工具时,它会出错

代码语言:javascript
复制
var data = new google.visualization.DataTable();

我正在做的事情是可能的,还是我们被困在这样一个问题上:如果Google有问题,我们只需要等待js文件超时并继续前进?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2013-10-03 05:49:57

由于您在成功时调用了google.load函数,因此?autoload=...内容是多余的。

只需将您的url更改为//www.google.com/jsapi,并向load调用添加一个'callback',以确保在corechart完成时调用您的drawChart代码。

下面是一个JSFiddle和一个代码片段:http://jsfiddle.net/c56pC/2/

代码语言:javascript
复制
<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>
票数 5
EN

Stack Overflow用户

发布于 2013-10-02 05:34:49

你的脚本一旦通过AJAX下载就不会执行。您想要使用$.getScript()

代码语言:javascript
复制
$.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"]}); 
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19126279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档