如何管理调用Ajax调用的顺序

时间:2014-12-04 10:18:30

标签: jquery

在就绪函数内部,我正在进行三个Ajax调用,这些调用应该一个接一个地执行

我能够管理这个 第一次和第二次Ajax调用??

我的问题是如何在第二次完成时调用第三次Ajax调用?

$(document).ready(function() {
    // First Ajax call
    var locationAjaxCall = $.ajax({
        type: 'GET',
        url: url + '/OMS/oms1/getlocationscreen?screen_ids=' + screen_ids,
        jsonpCallback: 'jsonCallback',
        cache: true,
        dataType: 'jsonp',
        jsonp: false,
        success: function(response) {

            var resp = JSON.stringify(response);

            alert(resp);

        },
        error: function(xhr, ajaxOptions, thrownError) {

        }
    });

    // Second Ajax call
    locationAjaxCall.done(function() {
        $.ajax({
            type: 'GET',
            url: url + '/OMS/oms1/fromscratchmodified?screen_ids=' + screen_ids,
            jsonpCallback: 'jsonCallback',
            dataType: 'jsonp',
            jsonp: false,
            success: function(response) {
                }
            });
    });



    // Third Ajax call
    $.ajax({
        type: 'GET',
        url: url + '/OMS/oms1/fetchcustomerid?UUID=' + qruuid,
        jsonpCallback: 'jsonCallback',
        dataType: 'jsonp',
        jsonp: false,
        success: function(response) {
        }
    });


});

2 个答案:

答案 0 :(得分:2)

尝试使用ajax调用的.done()回调,如下所示: -

 $(document).ready(function() {
    $.ajax({
          // First Ajax call
    }).done(function() {
        $.ajax({
          // Second Ajax call
        }).done(function() {
          // Third Ajax call
        });
     });
 });

答案 1 :(得分:0)

您可以使用done(或then,如果您还想处理失败)功能:

$.ajax({/*...first call...*/
}).done(function() {
    $.ajax({/*...second call...*/
    }).done(function() {
        $.ajax({/*...third call...*/});
    });
});

......如果真的很重要,他们会一个接一个地完成。


我认为这不是你所要求的,但是如果你只需要完成所有这三项工作,那么你可以使用$.when

$.when(
    $.ajax({/*...first call...*/}),
    $.ajax({/*...second call...*/}),
    $.ajax({/*...third call...*/})
).then(function() {
    // Do the next thing
});

调用将并行运行,并在最后一个调用完成后调用回调。