jQuery的Google.load() – 不适用于DataTables.net

我有旧的谷歌图表API(旧的静态图像)的网页(这里是一个例子 ),我想将它移动到新的谷歌可视化图表API。

我还使用jQuery,jQuery UI,Google JS地图和DataTables.net(全部托管在Google和Microsoft CDN上):

 @import "/demo_table_jui.css"; @import "https://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css";       $(function() { // ... $("#comments").dataTable( { "bJQueryUI": true, "sPaginationType": "full_numbers", "aaSorting": [[0, "desc"]] }); }); 

所以我想尝试使用google.loader(); 而不是脚本标签:

  @import "/demo_table_jui.css"; @import "https://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css";     google.load("jquery", "1"); google.load("jqueryui", "1"); google.load("maps", "3", {other_params: "language=ru&sensor=false"}); google.setOnLoadCallback(function() { // ... $("#comments").dataTable( { "bJQueryUI": true, "sPaginationType": "full_numbers", "aaSorting": [[0, "desc"]] }); }); 

不幸的是,这不起作用(这里是一个示例页面 ) – DataTables不再“包装”表。

Google Chrome控制台中的错误消息是:

 jquery.dataTables.min.js:151 Uncaught ReferenceError: jQuery is not defined 

请问有什么想法,我做错了什么?

我也曾在DataTables.net论坛上问过……

更新:

我已经从我的服务器本地托管dataTables.net文件切换到微软的CDN,因为它没有改变我的问题(我猜是这样的:在dataTables.net 之后由google.load()加载的jQuery库)

您在Google加载jQuery之前加载了dataTables脚本。 因此,当dataTables脚本运行时,没有jQuery对象,您就会收到该错误。

您需要在jQuery之后加载dataTables。 我非常怀疑Google托管该文件,但是在第一行的google回调中,您可以使用jQuery.getScript加载dataTables

您将需要延迟使用dataTable,直到jQuery完全拉入脚本,因此将您的真实代码移到getScript的成功回调中