使用jQuery加载脚本

时间:2010-05-21 04:18:43

标签: javascript jquery ajax load external

$.ajax({ url: "plugin.js", dataType: 'script', cache: true, success: function() {
    alert('loaded');
}});

1)我无法加载脚本,可能是由于路径不正确,但我如何确定正确的路径?上面的代码在init.js中,plugin.js也在同一个文件夹中。

2)我可以使用相同的请求一次加载多个插件吗?例如。 plugin.js,anotherplugin.js?

root
|
|_ html > page.html
|
|_ static > js > init.js, plugin.js

感谢您的帮助

6 个答案:

答案 0 :(得分:5)

您需要使用getScript,而不是ajax。 Ajax用于加载数据,而不是用于执行代码。

如果您需要加载多个文件,请尝试以下操作:

var scripts = ['plugin.js', 'test.js'];
for(var i = 0; i < scripts.length; i++) {
  $.getScript(scripts[i], function() {
    alert('script loaded');
  });
}

答案 1 :(得分:3)

1)路径将相对于从(不是init脚本的路径)加载的页面,因为这是浏览器在执行ajax请求时所处的URL。

修改:根据您的修改,加载脚本的路径为/static/js/plugin.js(如果它将部署在您域的根目录下),或{{1为了安全(假设它将从中加载的所有页面都在../static/js/plugin.js)。

2)否。如果他们在不同的文件中,他们将需要不同的请求。您可以将它们合并到服务器端的一个文件中,但是......

答案 2 :(得分:1)

作为更新,使用jQuery 1.9.x执行此操作的更好方法是使用Deferreds-methods(即$ .when),如下所示:

$.when(
  $.getScript('url/lib.js'),
  $.getScript('url/lib2.js')
).done(function() {
  console.log('done');
})

.done()回调函数有许多有用的参数。

阅读文档:http://api.jquery.com/jQuery.when/

答案 3 :(得分:0)

查看jQuery .getScript函数,该函数将加载脚本并将其包含在当前文档中。

1)相对于您的文档,路径应为/static/js/plugin.js

2)否。每个文件都由一个HTTP请求加载。

答案 4 :(得分:0)

我会查看Firebug的 net 标签,看看它是否正确加载,以及它尝试加载的路径。

路径将来自包含JavaScript的文档。

我还保留了这样的配置对象(本例中的PHP)

var config = { basePath: '<?php echo BASE_PATH; ?>' };

然后你可以做

var request = config.basePath + 'path/to/whatever.js';

答案 5 :(得分:0)

您可以使用'../'将脚本路径设置为基本路径。然后添加

的相对路径
    $.getScript("../plugin.js").done(function(script, textStatus ) {
    alert("loaded:" + textStatus);
}).fail(function(script, textStatus ) {
    alert("failed: " + textStatus);
});