异步加载脚本文件

时间:2014-06-02 10:04:06

标签: jquery getscript

我使用$ .getScript加载脚本文件,这很好用。如果我检查浏览器中的网络选项卡,文件确实下载成功。但是,当我尝试使用脚本文件中的函数时,它们是未定义的。 HTML中也没有新的脚本标记。

下载后如何使用新脚本文件?

注意:下载后,该文件也不会显示在开发工具的资源选项卡中。

编辑:在下面添加了代码以及更多信息

脚本正在加载文件:

var STUD = function () {
return {
    STUDLoaded: function () {
            alert('Working!');
        }
    }
}

function foo()
{
    alert('bar!');
}

js下载脚本文件并调用函数。

$.getScript(gSiteRoot + 'Scripts/Views/' + ControllerName + '.js')
              .done(function (script, textStatus) {
                  debugger;
                  foo();
                  if ($('#hdnJSClass') != undefined)
                    window[$('#hdnJSClass').val()][$('#hdnJSClassFunc').val()]();
              })
              .fail(function (jqxhr, settings, exception) {
                  GEN._displayNotification('Error', 'There was an error loading the page, please retry', true);
              });

在异步加载后调用时,函数foo正确触发。所以问题在于窗口调用,这个调用适用于我的其他js函数,但不适用于动态加载的函数。

2 个答案:

答案 0 :(得分:1)

使用.getScript()所以:

$.getScript('path/to/file.js', function(data, ts, jqxhr){
    if( jqxhr.status == 200 ){
        // do stuff
    }
    else{
        // failed retrieving file
    }
});

答案 1 :(得分:0)

我发现了这个问题,STUD对象中存在语法错误,其内容无效。我忘了添加右括号:

var STUD = function () {
return {
    STUDLoaded: function () {
            alert('Working!');
        }
    }
}(); // <-- forgot those