有人可以解释一下jQuery getScript()
函数的行为吗?
考虑使用javascript文件test.js
:
var tmp = 'a variable';
alert('here');
当通过html的test.js
标记加载<script>
时,一切正常: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>
但浏览器的错误控制台报告“未定义的变量tmp”错误。 我究竟做错了什么? 谢谢。
答案 0 :(得分:5)
$ .getScript可能是异步的,使用回调参数:
$.getScript("static/js/proto/test.js", function() {
// here you are sure that the script has been executed
});
请参阅$ .getScript的文档:http://api.jquery.com/jQuery.getScript
答案 1 :(得分:0)
脚本的真正问题在于我缺乏JS的经验,特别是在AJAX中:我试图在没有Web服务器的本地机器上运行此脚本。
猜猜:AJAX期望Web服务器的状态“200”异步加载文档。由于没有Web服务器,异步调用的状态为“0”。
谢谢大家的回答。