Javascript文件不会动态加载
我使用这个答案,动态加载javascript文件:Javascript文件不会动态加载,javascript,jquery,Javascript,Jquery,我使用这个答案,动态加载javascript文件: $.getScript("scripts/datagrid.js", function(){ alert("Script loaded but not necessarily executed."); }); 但它从来不会加载。JQuery在调用此脚本加载函数的js文件之前的标题中的底层HTML文件中被引用。此外,在加载文档之前,我不会调用此脚本加载器: $(document).read
$.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块中引发任何错误。@AndroidAddictdone
或fail
方法正在执行getScript
?您应该在控制台
上获得txtStatus
或异常
。谢谢。但我想知道为什么这个非常受欢迎的帖子和答案不起作用。@androidaddit,因为你做错了什么。你必须调试它,我们无能为力you@AndroidAddict你犯了什么错误?可能是$。getScript()
未获得正确的脚本路径
我在控制台中未看到任何错误,也未在执行脚本的try块中引发任何错误。@AndroidAddictdone
或fail
方法正在执行getScript
?您应该在控制台
上获得txtStatus
或异常
。