异步JavaScript不让我的函数返回?

时间:2011-05-26 18:09:17

标签: javascript jquery function asynchronous

这可能是一个非常容易和新手的问题,我甚至不确定异步调用是否应该受到责备。但无论如何......

我正在使用jQuery及其函数在.php文件上添加外部脚本。 首先,让我们来看看我的外部js。 (test.js):

function testFunc () {
  alert('It works!');
}

然后我的.php文件包含这个脚本:

<script>
$.getScript('supervisor/cache/test.js');
$(document).ready(function() {
  testFunc();
});
</script>

使用此方法,不会调用testFunc();。我尝试在调用之前插入return,将其放在ready函数之外,将$.getScript放在ready函数中。好吧,我不知道还能尝试什么。 此外,如果我使用按钮中的onClick调用此功能,它将起作用。 这就是为什么我认为问题可能来自jQuery的异步调用,即在脚本真正添加之前执行我的函数。但谁知道呢?以前有人遇到过同样的问题吗?

2 个答案:

答案 0 :(得分:5)

一旦AJAX脚本执行完毕,您应该调用该函数,这可能比文档就绪事件晚发生:

$.getScript('supervisor/cache/test.js', function() {
    testFunc();
});

答案 1 :(得分:2)

由于您是异步检索脚本,因此在加载test.js之前,文档可能已准备就绪。这样做:

$.getScript('supervisor/cache/test.js', function(){
    testFunc();
});