2010-05-21 86 views
1
$.ajax({ url: "plugin.js", dataType: 'script', cache: true, success: function() { 
    alert('loaded'); 
}}); 

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

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

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

感谢您的帮助

回答

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'); 
    }); 
} 
+17

从文档中可以看出:'getScript'是'.ajax({url:url,dataType:'script',success:success})''的缩写,所以使用'.ajax'并没有错,只是一点点更详细。 – Alconja 2010-05-21 04:32:25

+3

我正在使用.ajax专门用于异步缓存(缓存:true)。 – 3zzy 2010-05-21 04:36:30

+0

只是供参考getScript不缓存哪些是重要的... – 2015-11-02 03:25:13

3

1)的路径将是相对于它是从加载(不是你的初始化脚本的路径),因为那是URL,浏览器将在当执行ajax请求。

编辑:根据您的编辑,路径来加载脚本或者是/static/js/plugin.js(如果它会在你的域的根部署),或../static/js/plugin.js是安全的(假设所有的网页,它”将被加载从将在/html)。

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

+0

谢谢,我编辑了desc来显示结构,你能帮助找到路径吗?谢谢! – 3zzy 2010-05-21 04:27:16

+0

尝试了/static/js/plugin.js和/static/js/plugin.js,但仍无法加载。任何其他交叉检查方式? – 3zzy 2010-05-21 04:39:00

+0

首先尝试直接在浏览器中加载文件,它应该在'http:// /static/js/plugin.js'上工作。假设这个文件是你期望的那个地方,那么试着安装[firebug](http://getfirebug.com/)并且在ajax请求被触发时观察Net面板来查看请求的实际URL并且看看响应是... – Alconja 2010-05-21 04:45:58

0

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

1)路径应该是/static/js/plugin.js,相对于你的文档。

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

+0

尝试了/static/js/plugin.js和/static/js/plugin.js,但是它仍然不会加载。任何其他交叉检查路径的方式? – 3zzy 2010-05-21 04:39:25

+1

开发时使用Firefox。安装免费的Firebug(插件)。在那里,激活所有“调试面板”,并在需要停止javascript的位置放置一个“断点”。然后,您可以鼠标移动活动变量并读取其当前值。相当不错! – BerggreenDK 2010-07-14 03:04:43

0

我会检查Firebug的标签,看它是否被正确加载,并且路径它正试图从加载。

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

我还留着(在这个例子PHP)这样的配置对象

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

那么你可以做

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

作为一个更新,更好的方式使用jQuery 1.9做到这一点。 x是使用Deferreds的方法(即$。当),例如如下:

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

.done()呼叫返回函数有一些有用的参数。

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

0

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

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