jQuery ajax完成后调用函数

时间:2015-12-15 07:59:40

标签: javascript jquery ajax asynchronous

我想在加载并显示引导程序对话框之后调用我的函数loadTest()。

$(".btn").on("click", function() {
    $.ajax({
        type: "POST",
        url: '/echo/html/',
        data: {
            html: '',
            delay: 0.1
        },
        success: function(data) {
            $('body').append('<div id="test_modal_wrapper"></div>');
            $('#test_modal_wrapper').html(data);
            $("#modal").modal({backdrop: 'static'});

            $('#modal').on('hidden.bs.modal', function() {
                $('#test_modal_wrapper').remove();
            });
            loadTest(1, 3);
            loadTest(2, 2);
            loadTest(3, 1);
        }
    });
});

function loadTest(id, delay) {
    $.ajax({
        type: "POST",
        url: '/echo/html/',
        async: false,
        data: {
            html: '<div class="test-case"><h5>Testing connection '+ id +'</h5></div>',
            delay: delay
        },
        success: function(data) {
            $('.modal-body').append(data);
        }
    });
}

问题是对话框等待所有调用loadTest()完成,然后显示带有loadTest()函数结果的对话框。

我想要的是首先加载对话框,然后loadTest()做它的魔力。 :)

jsfiddle example

1 个答案:

答案 0 :(得分:2)

如果您想在模态打开之前推迟loadTest,请使用shown.bs.modal事件:

 $('#modal').on('shown.bs.modal', function() {
        loadTest(1, 3);
        loadTest(2, 2);
        loadTest(3, 1);
 });