我正在尝试使用getScript在本地加载javascript文件,但它返回404错误 .
test.js - 我正在尝试加载的脚本:
var hello = function(){
alert( "test" );
}
hello();
index.html中的jQuery代码:
<script type='text/javascript'>
$.getScript( "js/test.js" )
.fail( function( e ){ $( 'body' ).html( JSON.stringify( e ) ) } )
.done( function(){ alert( "Success" ) } );
</script>
当我在Chrome中打开index.html时,getScript失败,并且正文中显示以下内容:
{"readyState":4,"responseText":"","status":404,"statusText":"error"}
所以显然jQuery找不到指定的文件 . 但奇怪的是,当我使用传统标签时:
<script type='text/javascript' src='js/test.js'></script>
它工作正常 .
此外,如果我从外部网站加载,getScript工作正常,例如:
$.getScript( "http://www.youtube.com/player_api" )
那可能是什么问题呢?
1 回答
啊,关键是你在本地机器上运行它并尝试从本地硬盘驱动器中获取脚本 .
问题是
$.getScript()
使用Ajax调用来加载脚本,出于安全原因,默认情况下不允许Ajax调用从某些浏览器(如Chrome)中的硬盘驱动器中获取内容 . 如果从真实的Web服务器加载,这不会是一个问题 .您可以通过自己插入脚本标记而不是使用jQuery的
$.getScript()
或不尝试从本地硬盘驱动器运行它来解决此问题 . 还有一个Chrome命令行参数可以绕过此安全限制,您可以将其用于开发目的(不建议用于通用浏览) .