IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   jQuery - очередь асинхронных запросов. как? (http://www.imho.ws/showthread.php?t=142046)

beast_drc 21.11.2009 23:26

jQuery - очередь асинхронных запросов. как?
 
Привет!
Назрел вопрос: как организовать очередь асинхронных запросов?
Имеем список (ок. 150) элементов, чекбоксами отмесаются необходимые и загружаются.

Код:

$(document).ready(function(){              // по окончанию загрузки страницы
$('#load_selected').live('click',function(){      // Загрузка списка прайсов по клику.

var is_disable = false;
var my_o = $('#prices_for_load');
for (var i=0; i < $('#prices_for_load')[0].elements.length; i++) {

if($('#prices_for_load')[0].elements[i].type == "checkbox" && $('#prices_for_load')[0].elements[i].checked){

        $('#price_'+$('#prices_for_load')[0].elements[i].value ).html("<img src='/images/ajax.gif'>");
        //alert(i);
        //setTimeout("",3000);
        $.ajax({
          async:false,       
          url: '/test/autoload_handler.php?do=load_price_by_id&mode=ajax&id='+$('#prices_for_load')[0].elements[i].value,
          dataType : "text",
          success: function(data, textStatus) {
                $('#price_' + $('#prices_for_load')[0].elements[i].value ).html(data);
                $('#checkbox_' + i).css({display:"none"});
                $('#prices_for_load')[0].elements[i].checked=false;
                //alert(data);
          }
        });

 }
    //alert('test');
}
//alert('test');
if(confirm("Загрузка прайс-листов закончена. Необходимо перезагрулить страницу \n Для просмотра результатов нажмите 'Отмета', затем презегрузите страницу вручную.")){
        window.location="/admin/index.php?mode=autoload";                                   
}
                   
                    //return is_disable;
       
});

});

В данном примере используется синхронный запрос, но он подвешивает-таки браузер..

Задача такая: Сделать запрос, и чтобы браузер оставался активным, но при этом чтобы до завершения предыдущего запроса новый не стартовал.
:help::help:

ЕЖ 25.11.2009 00:40

beast_drc, есть готовые плагины для организации очереди ajax-запросов:
http://plugins.jquery.com/project/ajaxq
http://plugins.jquery.com/project/ajaxqueue
http://plugins.jquery.com/project/AjaxManager

добавлено через 8 минут
Кстати, раз уж использовать jQuery, думаю что вместо цикла for и if-а на проверку что элемент является чекнутым чекбоксом, можно написать просто один селектор, что-то типа:

$('#prices_for_load :checkbox:checked').each(...)

Точнее не скажу, т.к. не понятна разметка.


Часовой пояс GMT +4, время: 23:09.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.