【问题标题】:Call functions when jQuery ajax is completejQuery ajax 完成时调用函数
【发布时间】:2015-12-15 07:59:40
【问题描述】:

我想在加载并显示引导对话框后调用我的函数 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

【问题讨论】:

  • 尝试删除async:false
  • 为什么对所有 AJAX 请求都使用相同的 url'/echo/html/' 是实际 URL 还是占位符?
  • 每个函数调用的 URL 都不同。
  • 我认为 loadTest() 在对话框后加载。我看到小提琴并根据您的需要工作。现在问题是什么?
  • @adeneo,我想按顺序加载函数调用

标签: javascript jquery ajax asynchronous


【解决方案1】:

如果您想推迟loadTest 直到模式打开,请使用shown.bs.modal 事件:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 1970-01-01
    • 2013-02-14
    相关资源
    最近更新 更多