Javascript jQuery.getScript()行为
有人能解释一下jQuery的Javascript jQuery.getScript()行为,javascript,jquery,json,Javascript,Jquery,Json,有人能解释一下jQuery的getScript()函数的行为吗 考虑一个javascript文件test.js: var tmp = 'a variable'; alert('here'); 当通过html的标记加载test.js时,一切正常:tmp变量在全局范围内可用,并显示一个消息框 我试图通过以下代码获得类似的行为: <script> $(document).ready(function() { $.getScript("static/js/proto/test.js
getScript()
函数的行为吗
考虑一个javascript文件test.js
:
var tmp = 'a variable';
alert('here');
当通过html的
标记加载test.js
时,一切正常:tmp
变量在全局范围内可用,并显示一个消息框
我试图通过以下代码获得类似的行为:
<script>
$(document).ready(function() {
$.getScript("static/js/proto/test.js");
setTimeout(function() {
// at this point tmp should be available
// in the global scope
alert(tmp);
} , 2000); // 2 seconds timeout
}
</script>
$(文档).ready(函数(){
$.getScript(“static/js/proto/test.js”);
setTimeout(函数(){
//此时,tmp应可用
//在全球范围内
警报(tmp);
},2000);//2秒超时
}
但浏览器的错误控制台报告“未定义变量tmp”错误。
我做错了什么?
谢谢。$。getScript可能是异步的,请使用回调参数:
$.getScript("static/js/proto/test.js", function() {
// here you are sure that the script has been executed
});
请参阅$.getScript的文档:$。getScript可能是异步的,请使用回调参数:
$.getScript("static/js/proto/test.js", function() {
// here you are sure that the script has been executed
});
请参阅$.getScript的文档:脚本的真正问题是我缺乏使用JS的经验,尤其是在AJAX中:我试图在没有web服务器的本地机器上运行此脚本 猜猜看:AJAX希望web服务器的状态“200”异步加载文档。由于没有web服务器,异步调用的状态为“0”
谢谢大家的回答。脚本的真正问题是我缺乏JS的一般经验,特别是AJAX方面的经验:我试图在没有web服务器的本地机器上运行此脚本 猜猜看:AJAX希望web服务器的状态“200”异步加载文档。由于没有web服务器,异步调用的状态为“0”
谢谢大家的回答。也许这有帮助:确保您的脚本确实加载了。当我在我的计算机上进行实验时,我没有设法调用回调函数。可能这有帮助:确保您的脚本确实加载了。当我在我的计算机上进行实验时,我没有设法调用回调函数谢谢@arnaud,但我已经尝试了设置$.ajaxSetupt({'async':false}),然后进行了调用。这并不能解决问题:(@arnaud实际上并不建议您将async设置为false,他建议您尝试onload handler。事实上他是对的。async false是bad-bad-bad.Yep,除非您需要以非常特殊的顺序加载20个不同的js文件,否则它是不好的。请看一下;这将允许您的javascript模块指定它们的依赖项,并确保它们只有在加载依赖项后才会执行。@RoToRa或者您已经在模块中正确构造了代码。这在开发中没有问题。(显然,在生产中,您将大多数模块连接到同一个文件中,并让加载程序(例如requirejs)管理它。)谢谢@arnaud,但我已经尝试过设置$.ajaxSetupt({'async':false}),然后进行调用。这并不能解决问题:(@arnaud实际上并不建议您将async设置为false,他建议您尝试onload handler。事实上他是对的。async false是bad-bad-bad.Yep,除非您需要以非常特殊的顺序加载20个不同的js文件,否则它是不好的。请看一下;这将允许您的javascript模块指定它们的依赖项,并确保它们只有在加载依赖项后才会执行。@RoToRa或者您已经在模块中正确地构造了代码。在开发过程中,这没有问题。(显然,在生产过程中,您将大多数模块连接到同一个文件中,并让加载程序(例如requirejs)管理这一点。)我认为如果你接受@arnaud576875的答案是公平的。我认为如果你接受@arnaud576875的答案是公平的。