另一个文件完成后,Jquery运行一个scrpict文件

时间:2017-05-25 14:16:46

标签: jquery asynchronous

我有一个包含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 !!!)。

3 个答案:

答案 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")
}
...