$.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
感谢您的帮助
答案 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()
回调函数有许多有用的参数。
答案 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);
});