js在循环中等待,直到用ajax加载的内容

时间:2016-12-15 16:41:17

标签: javascript jquery ajax

我在等待ajax完成时遇到问题。

我需要查看选择列表的所有选项(有5个列表) 单击“Select1”中的选项后,它会加载(或刷新)“Select2”控件,在此处单击某个选项并加载“Select3”,依此类推......

所以,我需要在循环中等待,直到加载了必要的内容。

我已经阅读了$.when,但我不知道启动了哪些ajax请求,并且不能这样做:

var myAjax = $.ajax({ ... });
$.when(myAjax).then(...);

另外,我见过ajaxSuccess / ajaxStop,但不知道如何让它在我的情况下运作。

这是我的代码

$('selector1').each(function (i, v1) {
    $(v1).mouseup(); // launch loading
    // need to wait till 'selector2' elements load
    $('selector2').each(function (i, v2) {
        $(v2).mouseup(); // launch
        // .. wait ..
        $('selector3').each(function (i, v3) {
            $(v3).mouseup(); // launch
            // .. wait ..
            $('selector4').each(function (i, v4) {
                 $(v4).mouseup(); // launch
                 // .. wait ..
                 $('selector5').each(function (i, v5) {
                     // ... do something
                 });
            });
        });
    });
});

更新

我需要从网站(不是我的)获取有关轮子的信息,使用来自控制台的这个javascript,所以这些ajax请求不是我写的,我不知道他们从哪里加载,他们只是开火,当我用js单击一个选项。我需要等到他们完成。

我使用ajaxSuccess记录了ajax请求的url,它们是:

/netcat/podbor.php?key=113224Select1
/netcat/podbor.php?key=113224Select2
/netcat/podbor.php?key=113224Select3
/netcat/podbor.php?key=113224Select4

2 个答案:

答案 0 :(得分:0)

尝试为您的ajax请求使用done设置。也就是说,不是只调用Ajax请求,而是附加.done(function())。

它看起来像这样:

$.ajax({
    // arguments of the ajax request
    }).done(function() {
        //things to do once the ajax request is finished
});

您可以在the jQuery.ajax() documentation上看到一些示例。

答案 1 :(得分:0)

Vemonus答案正是您所需要的,但是在等待多个ajax请求完成时使用的选项是jQuery's when。像这样:

$.when(
    $.ajax({}),

    $.ajax({})

).then(function() {
    // code after ajax requests complete
});