我有一个包含2个脚本的html页面。
<script type="text/javascript" src="script1.js"></script>
<script type="text/javascript" src="script2.js"></script
script1.js:
function one () {
$.ajax({
type: 'get',
url: 'one.txt',
success:function (data) {
alert(data);
}
});
};
one();
script2.js:
alert('Script1 Has Completed!");
因为script1是异步的,所以script2在script1之前加载。
如何在scrpipt1 执行&#34; alert(数据)&#34;后才能运行 script2? (我想保持&#34; scrpit1.js&#34;和&#34; script2.js&#34;文件分开)。
UPD:可能是误解。我想先运行&#34;警报(数据)&#34;从script1,然后&#34;警告(&#34; Script1已完成!&#34;)&#34;来自script2(我想从script2中完全运行最后一个警报,而不是scrpipt1 !!!)。答案 0 :(得分:0)
根据例如
的第一次返回运行代码 function one () {
$.ajax({
type: 'get',
url: 'one.txt',
success:function (data) {
alert(data);
alert('Script One Has Completed!");
}
});
};
one();
但最好的选择是使用Promise
答案 1 :(得分:0)
你的第二个脚本将直接执行,它不会等到你的ajax调用完成。你需要的是一个你可以调用的函数,它不会被直接执行但是当它被调用时,它必须在被调用之前被定义
function two(){
alert("ajax call done");
}
function one () {
$.ajax({
type: 'get',
url: 'one.txt',
success:function (data) {
two();
}
});
};
one();
这称为程序编码
答案 2 :(得分:0)
你应该这样做
var script = document.createElement('script');
script.src = "script2.js";
...
success:function (data) {
alert(data);
$("head").append(script);//$("body")
}
...