jQuery.getScript()行为

时间:2011-09-01 11:39:54

标签: javascript jquery json

有人可以解释一下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”错误。 我究竟做错了什么? 谢谢。

2 个答案:

答案 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”。

谢谢大家的回答。