Поиск по этому блогу

понедельник, 11 июня 2012 г.

Выполнение нескольких запросов AJAX через jQuery .post

Нужно построить приложение, в котором вызовы Ajax будут вложены в друг друга заданное количество раз, а параметры последующих запросов будут задаваться в зависимости от номера вложенности. При этом запросы к серверу должны идти последовательно, один за одним.
Если не возможно использовать синхронные запросы ($.ajaxSetup({async:false});) в силу разных причин (использования jsonp, выполнения других запросов в ajax в это же время или в силу блокировок браузера), то нужно использовать "Отложенный объект", а точнее функцию jQuery.then(). Реализация кода может быть следующей:
var args = ['arg1','arg2','arg3','arg4','arg5','arg6'];
deferredPost(0, 5);
function deferredPost(index, max){    
    var delay = Math.random()*3;
    if (index < max){
        return $.post('/echo/html/', {html:('Response to '+args[index]), delay:delay}, 
        function(data){
            $('#response').append(data+'');
        }).then(function(){
            deferredPost(index+1, max);
        });
    } else {
        return $.post('/echo/html/', {html:('Response to '+args[index]), delay:delay}, 
        function(data){
            $('#response').append(data+'');
        });
    }
}

Комментариев нет:

Отправить комментарий