Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery.getScript()行为_Javascript_Jquery_Json - Fatal编程技术网

Javascript jQuery.getScript()行为

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

有人能解释一下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");

    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的答案是公平的。