重复的jquery ajax调用

时间:2013-01-30 11:05:49

标签: php javascript

我有多个复选框供用户选择,并根据我需要进行jquery ajax调用的所选复选框。为此,我使用FOR循环遍历所选元素数组并为每个复选框发送ajax请求。每个请求需要超过5-10分钟。在当前场景中,它同时调用所有ajax请求。

我想在完成早期的ajax请求后才调用下一个ajax调用。

有没有解决方案?

4 个答案:

答案 0 :(得分:1)

您可以进行递归调用。

function sendAjax(id) {
        var checkbox = $('input[type=checkbox]:eq('+id+')','#formid');
        if(checkbox == undefined)
             return;
        $.ajax({
            type: 'POST',
            dataType: "json",
            url: 'url',
            data: { },
            success: function (data) {
                  sendAjax(id+1);
            },
            error: function (data) {
                alert(data.responseText);
            }
        });
    }
    sendAjax(0);

答案 1 :(得分:0)

使用readyStateChange方法而不是for循环进行迭代。

    ...
    array_index++;
    var data = selected_elements[array_index];
    if (data) {
        send_ajax_request(data);
    }
}

答案 2 :(得分:0)

这有点违背了ajax的重点。第一个“a”通常被认为是“异步”,但是你想让请求同步(async = false我相信jQuery)

答案 3 :(得分:0)

使用递归调用,直到先前的ajax请求未完成,才能处理下一个请求。所以递归调用可以解决这些ajax请求的问题。

var queue_element = ["a","b","c","d","e","f","g"];
var execute_queue = function(i){    
  $.ajax( {    
    url: queue_element[i],
    success: function({
    i++;    // going to next queue entry

    // check if it exists
      if (queue_element[i] != undefined){
        execute_queue(i);
      }
    }
  }); // end of $.ajax( {...

}; // end of execute_queue() {...

var index = 0;

execute_queue(index); // go!