首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用多个ajax调用

调用多个ajax调用
EN

Stack Overflow用户
提问于 2013-11-18 23:16:04
回答 2查看 1.6K关注 0票数 2
代码语言:javascript
复制
 $.ajax({
        url: "",
        jsonpCallback: 'item',
        contentType: "application/json",
        dataType: 'jsonp',

        success: function(data) {
            console.log(data);
            var markup = "";
            $.each(data.list, function(i, elem) {
                dbInsert(elem['itemCode'], elem['description'], elem['price']);
            });

        },
        error: function(request, error) {
            alert(error);
        }
    });

我有上面类型的不同类型的ajax调用,具有不同的urls。如何一个接一个地运行每个Ajax调用?

EN

回答 2

Stack Overflow用户

发布于 2013-11-18 23:23:11

跟踪仍然要发送的urls,并让一个ajax请求的成功内联函数调用下一个请求。

代码语言:javascript
复制
var urls = [...];
var runNextAjax = function() {
    var url = urls.pop();
    $.ajax({
        url: url,
        ... other settings, as before ...
        success: function(data) {
           ... do what you want with the data ...
           if (urls.length > 0) runNextAjax();
        },
        error: function(req, err) {
           ... do what you want with the error ...
           if (urls.length > 0) runNextAjax();
        }
    });        
};
// Start the sequence off.
runNextAjax();

上面的代码在数据到达时对其进行操作,如果您希望缓存所有数据并在结束时对其执行操作,请将每个结果存储在一个数组中,然后在一个在结束时调用的函数中处理该数组:

代码语言:javascript
复制
var dataAccumulator = [];
var displayAllData = function() {
    for (int i = 0; i < dataAccumulator.length; ++i) {
        var data = dataAccumulator[i];
        ... process the data into HTML as before ...
    }
};

var urls = [...];
var runNextAjax = function() {
    var url = urls.pop();
    $.ajax({
        url: url,
        ... other settings, as before ...
        success: function(data) {
           // Store the data we received
           dataAccumulator.push(data);
           if (urls.length > 0) runNextAjax();
           else displayAllData();
        },
        error: function(req, err) {
           ... do what you want with the error ...
           if (urls.length > 0) runNextAjax();
           else displayAllData();
        }
    });        
};

// Start the sequence off.
runNextAjax();
票数 2
EN

Stack Overflow用户

发布于 2013-11-18 23:23:43

你可以做这样的事情。

代码语言:javascript
复制
$('#button').click(function() {
    $.when(
        $.ajax({
            url: '/echo/html/',
            success: function(data) {
                alert('one is done')
            }
        }),
        $.ajax({
            url: '/echo/html/',
            success: function(data) {
                alert('two is done')
            }
        })
    ).then( function(){
        alert('Final Done');
    });
});

fiddle

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20051226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档