Javascript文件不会动态加载

Javascript文件不会动态加载,javascript,jquery,Javascript,Jquery,我使用这个答案,动态加载javascript文件: $.getScript("scripts/datagrid.js", function(){ alert("Script loaded but not necessarily executed."); }); 但它从来不会加载。JQuery在调用此脚本加载函数的js文件之前的标题中的底层HTML文件中被引用。此外,在加载文档之前,我不会调用此脚本加载器: $(document).read

我使用这个答案,动态加载javascript文件:

$.getScript("scripts/datagrid.js", function(){

    alert("Script loaded but not necessarily executed.");                      

});
但它从来不会加载。JQuery在调用此脚本加载函数的js文件之前的标题中的底层HTML文件中被引用。此外,在加载文档之前,我不会调用此脚本加载器:

$(document).ready(function() {
    administration.init();
});



var administration = {
    ...


   init : function() {

      try {

          $.getScript("scripts/datagrid.js", function(){
              alert("Script loaded but not necessarily executed.");

            });


       } catch (e) {
        alert('[administration.init] error = ' + e);
       }


   ...
我已经通过检查使用JQuery在HTML中硬编码的元素的值来验证JQuery是否已经加载。脚本执行的事实也验证了这一点

如果我将脚本文件添加到HTML头中,它就会存在并工作,但我希望动态加载它

为什么匿名函数从未启动(显然是因为脚本从未加载-为什么)

编辑

按照下面Sanjay的建议,我将错误处理程序绑定到ajax调用,控制台现在显示以下内容:

TypeError: Cannot read property 'init' of undefined(…)

因此,它正在查找文件,只是显然无法找到类的init函数。

您应该尝试加载
脚本

$.getScript( "ajax/test.js" )
  .done(function( script, textStatus ) {
    console.log( textStatus );
  })
  .fail(function( jqxhr, settings, exception ) {
    console.log( exception );  // here you can get reason why file is not loading 
});

您可以在此处看到控制台错误
未找到

您应该尝试加载
脚本

$.getScript( "ajax/test.js" )
  .done(function( script, textStatus ) {
    console.log( textStatus );
  })
  .fail(function( jqxhr, settings, exception ) {
    console.log( exception );  // here you can get reason why file is not loading 
});

您可以在此处看到控制台错误
notfound

使用如下顺序更改代码:(删除try/hide并使用事件处理程序调试此代码)声明后调用它

if(!jQuery){alert("No jQuery loaded")}
var administration = {
  init : function() {
    $.getScript( "scripts/datagrid.js" )
    .done(function( script, textStatus ) { 
        console.log( textStatus );
    })
    .fail(function( jqxhr, settings, exception ) { 
        alert("exception:"+ exception ); 
    });
  }
};
$(document).ready(function() {
    administration.init();
});

使用如下顺序更改代码:(删除try/hide并使用事件处理程序对此进行调试)在声明后调用它

if(!jQuery){alert("No jQuery loaded")}
var administration = {
  init : function() {
    $.getScript( "scripts/datagrid.js" )
    .done(function( script, textStatus ) { 
        console.log( textStatus );
    })
    .fail(function( jqxhr, settings, exception ) { 
        alert("exception:"+ exception ); 
    });
  }
};
$(document).ready(function() {
    administration.init();
});


您的JavaScript控制台中有错误吗?你看到对js文件的请求了吗?(可能它返回了404或其他什么,或者是错误的mime类型)。@Neil控制台是否应该有404 not found错误?$.getScript只是$.ajax()的快捷方式。您可以使用长表单并添加错误处理程序吗?@Neil ajax请求仍然会在控制台中抛出404,即使没有失败回调。@Neil完全限定会在文件引用中抛出404 not found错误。您的JavaScript控制台中有错误吗?你看到对js文件的请求了吗?(可能它返回了404或其他什么,或者是错误的mime类型)。@Neil控制台是否应该有404 not found错误?$.getScript只是$.ajax()的快捷方式。您可以使用长表单并添加错误处理程序吗?@Neil ajax请求仍然会在控制台中抛出404,即使没有失败回调。@Neil完全限定在文件引用中抛出404 not found错误。谢谢。但我想知道为什么这个非常受欢迎的帖子和答案不起作用。@androidaddit,因为你做错了什么。你必须调试它,我们无能为力you@AndroidAddict你犯了什么错误?可能是
$。getScript()
未获得正确的
脚本路径
我在控制台中未看到任何错误,也未在执行脚本的try块中引发任何错误。@AndroidAddict
done
fail
方法正在执行
getScript
?您应该在
控制台
上获得
txtStatus
异常
。谢谢。但我想知道为什么这个非常受欢迎的帖子和答案不起作用。@androidaddit,因为你做错了什么。你必须调试它,我们无能为力you@AndroidAddict你犯了什么错误?可能是
$。getScript()
未获得正确的
脚本路径
我在控制台中未看到任何错误,也未在执行脚本的try块中引发任何错误。@AndroidAddict
done
fail
方法正在执行
getScript
?您应该在
控制台
上获得
txtStatus
异常