如何使循环等到ajax响应

时间:2016-02-15 06:45:38

标签: javascript jquery ajax

$.ajax({
        url: "",
        data: "",
        dataType: 'json',
        success: function (data) {
            var tblBody = '';
            for(var i=0;i<data.length;i++){
                $.ajax({
                    type: "GET",
                    url: "",
                    data: {},
                    success: function(response){
                        // creating table rows
                        tblBody += rowData;
                    },
                    error: function(){
                    }
                });
            }
            $("#losssummary").append(tblBody); // appending table all rows
            createDataTable('sample_1', "M d, yyyy");
        },
        error: function(err)
        {
        }
    });
});

3 个答案:

答案 0 :(得分:1)

试试此代码段。

此处我使用了$.when().then(),然后将if替换为while

$.ajax({
        url: "",
        data: "",
        dataType: 'json',
        success: function(data) {
            var tblBody = '',
              i = 0;
            while (i < data.length) {
                $.when(
                  $.ajax({
                      type: "GET",
                      url: "",
                      data: {},
                      success: function(response) {
                          // creating table rows
                          tblBody += rowData;
                      },
                      error: function() {}
                  })
              ).then(function(data, textStatus, jqXHR) {
                  i++;
              });
            }
            $("#losssummary").append(tblBody); // appending table all rows
            createDataTable('sample_1', "M d, yyyy");
        },
        error: function(err) {}
    });

答案 1 :(得分:1)

$.ajax({
        url: "",
        data: "",
        dataType: 'json',
        success: function (data) {
            var tblBody = '';
            var i = 0;
            selfCalling(data);

            function selfCalling(data){
                $.ajax({
                    type: "GET",
                    url: "",
                    data: {},
                    success: function(response){
                        // creating table rows
                        tblBody += rowData;

                        while(i<data.length){
                              selfCalling(data);
                              i++;
                        }
                    },
                    error: function(){
                    }
                });


            }
            $("#losssummary").append(tblBody); // appending table all rows
            createDataTable('sample_1', "M d, yyyy");
        },
        error: function(err)
        {
        }
    });
});

这使用递归函数来解决您的问题。希望它有所帮助

答案 2 :(得分:1)

使用complete选项而不是success选项