jQuery - 在脚本加载并执行后触发AJAX回调?

时间:2015-09-26 18:04:25

标签: javascript jquery ajax

我遇到了一个需要AJAX加载某些脚本的问题,只有在脚本加载和解析/执行后才应该触发回调函数。

似乎ajax请求会在脚本下载后立即触发回调,但不一定会在执行完脚本时触发。有没有办法做到这一点,而不是使用Timeouts等等?

        $.ajax({
            dataType: 'script',
            cache: false,
            async: false,
            url: 'http://example.com/script1.js'
        }).success(function () {
            // I need this callback to fire only once the script has been executed
        });

1 个答案:

答案 0 :(得分:1)

你应该在

时查看jquerys

允许您在执行多个异步(ajax)方法后执行代码。

来自jquery文档:

  

描述:提供一种基于one执行回调函数的方法   或更多对象,通常是表示异步的延迟对象   事件

https://api.jquery.com/jquery.when/

对于在运行代码之前要执行的脚本,jquery有一个解决方案; getScripts

$.getScript("jquery.cookie.js")
    .done(function() {
        jQuery.cookie("cookie_name", "value", { expires: 7 });
});

在运行代码之前加载多个脚本并执行它们,方法是 getScript

$.when(
    $.getScript( "/script1.js" ),
    $.getScript( "/script2.js" ),
    $.Deferred(function( deferred ){
        $( deferred.resolve );
    })
).done(function(){

    // your code

});

另一种方法:

var scripts = ['script1.js','script2.js','script3.js'];
$.getScript(scripts, function(data, textStatus) {
    //do something after all scripts have loaded
});

参考:http://www.sitepoint.com/getscript-mutiple-scripts/