Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.06.2014, 19:10
Новичок на форуме
Отправить личное сообщение для Molen Посмотреть профиль Найти все сообщения от Molen
 
Регистрация: 31.08.2011
Сообщений: 7

Пауза в each или управление шагами цикла?
Добрый день, господа.
Ситуация в этот раз примерно такая:
Есть веб страница ссылками на внутренние странички.
На внутренней страничке нажимается кнопка отправляющая ajax запрос на сервер и пользователь подписывается на раздачу.
Я хочу сделать так, чтобы не надо было заходить на внутренние странички, а прямо с главной можно было возле каждой ссылки создать кнопку по клику на которую выполнялся бы тот же самый ajax запрос.
Однако, администрация сайта не глупа, и сделала проверку "А заходил ли юзер на эту страницу?".
Не беда, кнопочки на главной сделал, да и прикрепил к ним функцию создания блока, в который грузится контент странички, а после загрузки удаляется и выполняется имитация клика по заветной кнопке на внутренней. Однако за каждый клик по кнопке, перед имитацией нужно выполнить загрузку контента, это меня не утраивает.
А хочу я сделать так, чтобы при загрузке странички, сразу же выполнялась загрузка контента внутренних страниц, после загрузки каждой выполнялась имитация клика и в итоге, кроме клика на F5 юзеру ничего не надо было делать.

И тут появляется проблема, т.к. я недоделанный профан, и ничего кроме each() не знаю, то выходит у меня ровным счётом нихрена.
Когда через each() я пытаюсь собрать все ссылки на странице и прогрузить их контент, делается это всё в один момент, хоть там 3 ссылки, хоть 200, мне нужно создать, какую-то очередность или делать паузы в each цикле, пока не завершилась загрузка контента текущей ссылки и удаление элемента с этим контентом.

Сейчас говнокод выглядит примерно так:
.each(function( index ) {
     var ahref = $(this).attr("href");
     var rid = ahref.split("com/k")[1].split(".html")[0];
     $("#member").append("<div id='wID"+rid+"'>rid content number-"+rid+"</div>");
     $("#wID"+rid).load("http://site.com/k"+rid+".html", function(responseText, statusText, xhr){
               if(statusText == "success")
                    $("#wID"+rid).remove();
                    $("#btn"+rid).attr("value", "Done!");
               if(statusText == "error")
                    $("#wID"+rid).remove();
                    $("#btn"+rid).attr("value", "FailLoad!");	
     });


Т.к. чутьё мне подсказывает, что никаких пауз в цикле each() нету, прошу подсказать, какая функция подойдёт под создание нужного мне цикла, где можно будет переходить к загрузке контента следующей ссылки, только если загружен контент предыдущей.

Последний раз редактировалось Molen, 06.06.2014 в 19:18.
Ответить с цитированием
  #2 (permalink)  
Старый 06.06.2014, 23:23
Новичок на форуме
Отправить личное сообщение для Molen Посмотреть профиль Найти все сообщения от Molen
 
Регистрация: 31.08.2011
Сообщений: 7

Гуглил и в итоге нашел то, что мне надо.
Честно скажу, что после работы с чистым php я уж точно не ожидал подобной реализации на js.
Код с чужого блога, ибо понятия не имею, как тут относятся к внешним ссылкам.
$(document).ready(function(){
 
    var seq = new Array();
    for (i=1; i<101; i++) {
        seq.push(i);
    }
     
    finishCallback = function(){alert('усе')}
 
    function go(){
         
        if(seq.length) {
            $.ajax({
                url: 'ajax.php?n='+seq.shift(),
                complete: function(){
                    go();
                }
            });
        }
         
        else {finishCallback()}
    }   
             
    go();
});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кастомный селект, чекбокс, радио vostok Ваши сайты и скрипты 0 12.08.2013 00:33