Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 6822-й день

Шановні користувачі! Запрошуємо вас до офіційного телеграм-канала 0day Community. Тут ви зможете поспілкуватися одне з одним та дізнатися про останні новини щодо роботи ресурса, поставити запитання до адміністрації, тощо. Перейти до телеграм-канала можна відсканувавши QR-код або натиснувши на посилання: @zeroday_ua
 
Reply to this topicStart new topic

 Как за синхронить вывод при обходе елементов Jquery

RipperR
Sep 1 2017, 21:04
  
Пост #1



Репутация:   40  
Постоялец
***

Группа: Пользователи
Сообщений: 1 153
С нами с: 25-March 08


Как засинхронить вывод при обходе елементов

есть код


function ticket_counter()
{
$("ul.sidebar-menu").find("span#tickets_count").each(function() {
    var type=$(this).attr('name');
    var element = $(this);
        $.get('menu_count_return.php?type=tickets&sub='+type+'').done(function( data ) {
            var item=data;
            $(element).html(''+data+'');
        });
    });
return true;
};    


Оно находит 10 элементов меню и меняет значение количество на возвращаемого из url
Но так как ответ происходит не моментально а элементов 10 то значения заполняются поэтапно что не есть красиво ... как сделать так чтобы пока все 10 элементов не получать ответ не рисовать результат ...

Возможно как-то можно распараллелить эту функцию для ускорения работы.

Сообщение отредактировал RipperR - Sep 1 2017, 21:15
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
miniden
Sep 1 2017, 21:28
  
Пост #2



Репутация:   31  
Дух


Группа: Пользователи
Сообщений: 89
С нами с: 14-October 09



function ticket_counter()
{
var collection=[];
$("ul.sidebar-menu").find("span#tickets_count").each(function() {
    var type=$(this).attr('name');
    var element = $(this);
        $.get('menu_count_return.php?type=tickets&sub='+type+'').done(function( data ) {
//перед этим можно проверять есть ли на такой тип - дата, и не делать повторно запрос.
                        collection.push({type:data});
        });
    });
return true;
};    

Я вижу 2 решения:
вначале пособирать данные, потом рисовать.
Переделать menu_count_return.php что бы он принимал массив типов, и возвращал массив типов с данными, и за 1 раз рисовать.
А еще в эту функцию можно попробовать async (default: true)
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
RipperR
Sep 2 2017, 13:37
  
Пост #3



Репутация:   40  
Постоялец
***

Группа: Пользователи
Сообщений: 1 153
С нами с: 25-March 08


С Jquery я еще не очень ... только простенькие вещи научился делать (. Буду разбиратся походу ... на php не проблема можно вернуть сразу все значения ибо заведомо известно что будет запрашиватся нужны с стороны jquery только разобрать масив и подожить в нужные места при этом масив будет аосоциативные где ключь будет равен $(this).attr('name'); для удобства ... вопрос как в jquery разбирать масив и может лучше json возвращать?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Payne
Sep 6 2017, 8:13
  
Пост #4



Репутация:   19  
Активист
*

Группа: Пользователи
Сообщений: 293
С нами с: 17-March 06


Согласен с предыдущим пользователем, сначала собирайте данные, потом рисуйте.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
RipperR
Sep 11 2017, 17:56
  
Пост #5



Репутация:   40  
Постоялец
***

Группа: Пользователи
Сообщений: 1 153
С нами с: 25-March 08


Да все получилось. Спс так и сделал сгенерировал масив в php и скормил его в jquery

Сообщение отредактировал RipperR - Sep 11 2017, 17:56
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Reply to this topicStart new topic

 



- Упрощённая версия
Сейчас: 17th November 2024 - 19:18
Сайт не розміщує електронні версії творів, а займається лише колекціонуванням та каталогізацією посилань, що публікуються нашими користувачами. Якщо Ви є правовласником якоїсь частини опублікованого матеріалу та не бажаєте, щоб посилання на нього знаходилось в нашому каталозі, зв’яжіться з нами і ми видалимо його. Файли для обміну надані користувачами сайту і адміністрація не несе відповідальності за їх вміст.