使用jQuery 1.5.1加载外部.js

时间:2011-03-14 14:58:39

标签: jquery

我一直在使用这段脚本将外部.js文件加载到文档中:

$.ajax({
    url: dir + '/' + module + '.js',
    dataType: 'script',
    async: false,
    success: function() {
        modules[module].init();
    },
    error: function(xhr) {
        alert('Error loading module "' + module + '"');
    }
});

但是当我切换到jQuery 1.5.1(而不是之前使用的1.4.2)时它停止工作。它加载文件但不是成功 - 文件内容作为错误传递xhr.responseText

3 个答案:

答案 0 :(得分:0)

为什么不使用这样的东西?

<script type="text/javascript" src="/jquery-1.5.1.js"></script>
<script type="text/javascript" src="/[name of script].js"></script>

在定义使用它的任何函数之前,您只需要确保包含jQuery文件。

答案 1 :(得分:0)

您可以使用$ .ajax()中的'complete'事件而不是'success'事件吗?


如果您需要动态加载javascript源文件,可以将[script]标记附加到[head]标记:

$("head").append(
  unescape('%3Cscript src="/path/to/javascript.js"%3E%3C/script%3E');
);

唯一的问题是,您必须阻止脚本多次加载。

我喜欢有一个if()条件来测试我知道在动态加载的javascript文件中定义的函数的存在。我使用underscore.js和_.isFunction()来测试这个(http://documentcloud.github.com/underscore/#isFunction)。如果未定义测试函数,则仅加载javascript src文件:

if( !( _.isFunction(someTestFunction) ) ) {
  $("head").append(
    unescape('%3Cscript src="/path/to/javascript.js"%3E%3C/script%3E');
  );
}

答案 2 :(得分:0)

根据您发布的内容,您的代码似乎有一些范围问题。如果没有看到它在什么情况下被使用,很难确切地说出错误,但很可能是因为module&amp;中没有定义变量successerror回调。所以我认为你应该检查这两个回调中是否定义了module

此外,您可以保留一段时间并改为使用$.getScript