powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Прелоадер с процентами во время выполнения ajax запроса
20 сообщений из 20, страница 1 из 1
Прелоадер с процентами во время выполнения ajax запроса
    #38725751
Фотография meg17m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как сделать прелоадер с бегущими процентами во время аякс запроса на выборку строк из базы. Типа выбрано K из N строк и выводит K/N*100 = P%.
Если у кого-то есть сниппет, поделитесь, плиз.
...
Рейтинг: 0 / 0
Прелоадер с процентами во время выполнения ajax запроса
    #38725760
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegaLasta , процент можно показать только если читаешь данные кусками... Получаешь сразу все - фик тебе прогресса.
...
Рейтинг: 0 / 0
Прелоадер с процентами во время выполнения ajax запроса
    #38725767
Фотография meg17m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa MegaLasta , процент можно показать только если читаешь данные кусками... Получаешь сразу все - фик тебе прогресса.
И что, совсем-совсем никак? Никаких хаков и фейков нельзя придумать? Босс то требует :(
...
Рейтинг: 0 / 0
Прелоадер с процентами во время выполнения ajax запроса
    #38725813
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фейк можно. зацикленный прогрессбар :)
...
Рейтинг: 0 / 0
Прелоадер с процентами во время выполнения ajax запроса
    #38725818
Фотография meg17m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyфейк можно. зацикленный прогрессбар :) но он же реальные проценты выдавать не будет, верно?
...
Рейтинг: 0 / 0
Прелоадер с процентами во время выполнения ajax запроса
    #38725821
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegaLastaИ что, совсем-совсем никак? Никаких хаков и фейков нельзя придумать? Босс то требует :(
...
Рейтинг: 0 / 0
Прелоадер с процентами во время выполнения ajax запроса
    #38725827
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegaLastaИ что, совсем-совсем никак?
Я же написал - грузи частями, предварительно узнав, сколько таких частей будет...
...
Рейтинг: 0 / 0
Прелоадер с процентами во время выполнения ajax запроса
    #38725831
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegaLastaAntonariyфейк можно. зацикленный прогрессбар :) но он же реальные проценты выдавать не будет, верно?ну это же фейк, верно?
...
Рейтинг: 0 / 0
Прелоадер с процентами во время выполнения ajax запроса
    #38726101
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно

не аякс, а в фрейме. получай лонгпул ответ, первым делом передать общее число записей, потом фронденд их частями получает, отмечает прогрес бар. но врядли оно будет того стоить.

сокрей всего оно будет очень быстро...
солько ты там данных будешь получать? 100, 200, 400?
...
Рейтинг: 0 / 0
Прелоадер с процентами во время выполнения ajax запроса
    #38726102
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegaLastakrvsa MegaLasta , процент можно показать только если читаешь данные кусками... Получаешь сразу все - фик тебе прогресса.
И что, совсем-совсем никак? Никаких хаков и фейков нельзя придумать? Босс то требует :(

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

я лично за циклический прогрес бар
...
Рейтинг: 0 / 0
Прелоадер с процентами во время выполнения ajax запроса
    #38726205
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
торитически - можно, вопрос что за данные?
и как они отправляются.
если сервер формирует их в какомто цикле (к примеру for .... или while)
то используя технологию websockets можно отобразить без проблем.
...
Рейтинг: 0 / 0
Прелоадер с процентами во время выполнения ajax запроса
    #38726207
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я так сделал когда клиент отсылает кучу фоток сразу (хром, мозилла) сервер их пересчитывает для уменьшения объёма и полсле зваершения обработки очередной фотки -отправляет клиенту что обработал.
...
Рейтинг: 0 / 0
Прелоадер с процентами во время выполнения ajax запроса
    #38726209
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с ajax такое не прокатит, на каждый запрос он должен получить ответ...
запрос на данные - ответ на данные...
...
Рейтинг: 0 / 0
Прелоадер с процентами во время выполнения ajax запроса
    #38726285
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяс ajax такое не прокатит, на каждый запрос он должен получить ответ...
запрос на данные - ответ на данные...
А кто мешает запустить процесс и писать в файл (или куда-то ещё) процент выполнения, а параллельно кидать запросы к серверу с проверкой хода выполнения :)
...
Рейтинг: 0 / 0
Прелоадер с процентами во время выполнения ajax запроса
    #38726351
st_st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно поставить прогрессбар на получаемые данные (xhr.onprogress - он и на аплоад и на даунлоад работает), которые в данный момент передаются от сервера клиенту в этом самом запросе. А если там что-то где-то отдельно на сервере крутится, то можно в кэш сервера записывать ход выполнения и другим параллельным запросом с websockets получать данные.
...
Рейтинг: 0 / 0
Прелоадер с процентами во время выполнения ajax запроса
    #38726540
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор во время аякс запроса на выборку строк из базы.
ну если запрос к базе длительный, то получить прогресс бар даже на сервере не получится, т.к. база не выдает никаких данных пока работает запрос. только крутить гифку-индикатор...
...
Рейтинг: 0 / 0
Прелоадер с процентами во время выполнения ajax запроса
    #38726645
Фотография meg17m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяавтор во время аякс запроса на выборку строк из базы.
ну если запрос к базе длительный, то получить прогресс бар даже на сервере не получится, т.к. база не выдает никаких данных пока работает запрос. только крутить гифку-индикатор...

Нет, там как раз куча запросов в цикле. Количество итераций цикла наперед известно, так что тут все норм. Я сейчас делаю вот так:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
function second_passed() {
        if (GL_PRELODER == true)
        {
            $.ajax({
                url: "/admin/main/getSessionPreloader",
                success: function(data){
                    $('#ajaxouter').html("<center><br/><br/><br/><img border=0 src='/media/newdis/images/ajax-loader.gif'><br>"+data+"%</center>");
                }
            });
        }
    }

    function percentPreloder()
    {
        window.setInterval(second_passed,100);
    }

    function ajaxtabsant(lid)
    {
        if(lid == 1)
        {
            $('#ajaxouter').html("<center><br/><br/><br/><img border=0 src='/media/newdis/images/ajax-loader.gif'></center>");
            GL_PRELODER = true;
            percentPreloder();
            $.ajax({
                 type: "POST",
                 url: "/admin/main/getPerDaysAjax",
                 success: function(data){

                     GL_PRELODER = false; 
                     $('#ajaxouter').html(data);
                     ajaxHideLast();
                     sortTable(document.getElementById("mainstattableid"), sortAsc, sortDesc );

                 }


а внутри пхпшной ф-ии в аяксе:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
$this->setSessionPreloader(0);
for ($i = 0; $i <= $num_days; $i++)
{
   ....
   $this->setSessionPreloader($kk_an);
}
$this->setSessionPreloader(0);


....


//возвращает сессию прелоадера
    public function getSessionPreloader()
    {
        //$res =  Session::instance(Session::$default)->get('Preloader');
        $uid = Auth::instance()->get_user()->id;
        $res = DB::query(Database::SELECT," SELECT preloader
                                            FROM users
                                            WHERE id = :id ")
            ->bind(':id',$uid)
            ->execute()
            ->get('preloader');
        if (!$res || $res == '') {$res = '0';}
        return $res;
    }

    //аписывает сессию прелоадера
    public function setSessionPreloader($val)
    {
        $uid = Auth::instance()->get_user()->id;
        DB::query(Database::UPDATE," UPDATE users
                                     SET preloader = :preloader
                                     WHERE id = :id ")
            ->bind(':preloader',$val)
            ->bind(':id', $uid)
            ->execute();
    }


В итоге получаю крутящийся кружок безо всякого текста, потом отображаются данные, потом они исчезают и выводится кружок со 100%. Отсюда я делаю вывод, что ф-ия:
Код: html
1.
2.
3.
4.
function second_passed() {
        if (GL_PRELODER == true)
        {
            $.ajax({


начинает работать только тогда, когда заканчивает работать основной аякс запрос. Т.е. запросы выполняются сугубо последовательно.

Также есть вариант с progress:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
$.ajax({
                 type: "POST",
                 url: "/admin/main/getPerDaysAjax",
                 success: function(data){


                     $('#ajaxouter').html(data);
                     ajaxHideLast();
                     sortTable(document.getElementById("mainstattableid"), sortAsc, sortDesc );

                 },
                 xhr: function()
                 {
                    var xhr = new window.XMLHttpRequest();
                    //Upload progress
                    xhr.upload.addEventListener("progress", function(evt){
                        if (evt.lengthComputable) {
                            var pct = Math.round((evt.loaded / evt.total) * 100);
                            $('#ajaxouter').html("<center><br/><br/><br/><img border=0 src='/media/newdis/images/ajax-loader.gif'><br>"+pct+"%</center>");
                        }
                    }, false);
                    //Download progress
                    xhr.addEventListener("progress", function(evt){
                        if (evt.lengthComputable) {
                            var pct = Math.round((evt.loaded / evt.total) * 100);
                            $('#ajaxouter').html("<center><br/><br/><br/><img border=0 src='/media/newdis/images/ajax-loader.gif'><br>"+pct+"%</center>");
                        }
                    }, false);
                    return xhr;
                 }
            });


Но он работает таким образом, что сначала выдает 100%, а потом только начинает выполняться аякс запрос. Т.е. он считает походу просто объем пхп файла в аяксе, а сколько будет выполняться сам скрипт, он не знает.

Записей может быть много, до несколько тыс.

... А с сокетами нужно подумать, конечно.
...
Рейтинг: 0 / 0
Прелоадер с процентами во время выполнения ajax запроса
    #38726733
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegaLasta,

похоже на блокировку сессии :) Или ещё чего-то... 2 параллельных запроса с одного клиента точно можно сделать...
...
Рейтинг: 0 / 0
Прелоадер с процентами во время выполнения ajax запроса
    #38726922
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegaLasta,
если ты поробуешь websocket - ты откажешья от ajax, и тебе захочется всё переделать на websocket .
хотя можно и обе технологии использовать параллельно. только надо решить вопрос с кросбраузерностью
...
Рейтинг: 0 / 0
Прелоадер с процентами во время выполнения ajax запроса
    #38727101
Фотография meg17m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПрограмёрMegaLasta,

похоже на блокировку сессии :) Или ещё чего-то... 2 параллельных запроса с одного клиента точно можно сделать...

да, но там сессий нету, вы же видите, что я через базу переписал
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Прелоадер с процентами во время выполнения ajax запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]