[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Какое событие происходит по окончании загрузки?
sergeiss
Сижу тут весь в раздумьях, что-то мыслей нету совсем.

Ситуация простая. Есть ссылка, при клике на которую ее href формируется динамически. Затем происходит "переход" по этой ссылке, а точнее, формируется файл CSV, который отдается с сервера, не записываясь на сервере. Всё красиво, всё работает. Страница не перегружается, файл принимается.

Вот только проблема в том, что надо отследить, когда сервер начал отдавать данные по запросу. Потому что формирование данных может занимать до 7-10 секунд. На это время (от клика до начала получения данных) я хочу вывести какой-нибудь индикатор загрузки. И его, естественно, надо убрать, как только начался прием данных.

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

Кто что умное скажет?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
vital
Ну.. а что мешает показать индикатор загрузки, а потом послать аяксовый запрос на серв(уже со страницы с индикатором) что бы начать генерить что оно там делает?
Если без аякса - ну зафигачить во фрейм например. т.е в одной части бегает крутилка, в другой, в фрейме(пусть даже не видимом), грузится процесс и на onload во фрейме убирать крутилку в паренте.

_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
vital
Ну и еще может будем посмотреть полезно это: https://spreadsheets.google.com/lv?key=tDdc...NQRCNCRCflWxhYQ

и придумать че-нить с подгрузкой скриптов.

_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
sergeiss
Цитата (vital @ 21.07.2014 - 19:42)
Ну.. а что мешает показать индикатор загрузки, а потом послать аяксовый запрос на серв(уже со страницы с индикатором) что бы начать генерить что оно там делает?

Мешает то, что нету аяксового запроса smile.gif Есть только тэг A и всё.

Во фрейм тоже не получится, потому что это именно ответ на клик в тэге А.

vital, спасибо за ссылку... Но это не то, вроде как.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
killer8080
Цитата

Во фрейм тоже не получится, потому что это именно ответ на клик в тэге А.

Что мешает направить его во фрейм?
sergeiss
Цитата (killer8080 @ 21.07.2014 - 20:21)
Что мешает направить его во фрейм?

Весь поток направляется на запись в файл, поэтому в айфрейм просто ничего не попадает. И поэтому его "онлоад" не может сработать.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
sergeiss
Я вопрос вот как переформулирую. Как отследить сам факт появления (или закрытия) диалогового окна сохранения файла в бразузере? Гуглю, ничего не могу найти...

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
vital
Цитата (sergeiss @ 21.07.2014 - 19:14)
Я вопрос вот как переформулирую. Как отследить сам факт появления (или закрытия) диалогового окна сохранения файла в бразузере? Гуглю, ничего не могу найти...

Никак же. Если только во флеше че есть.
Обычно обходятся onclick(появление)\onchange(изменение и закрытие)
В случае отмены хз.

_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
sergeiss
Всё оказалось настолько просто, что даже стыдно, что сам не догадался wacko.gif

При клике надо включить таймер ожидания определенной куки. А в том файле, который загружается, надо эту куку выставить. И запрашивать ее, допустим, раз в 500 мс. Как только появилась кука - значит, процесс загрузки файла завершен (или, более строго, заголовки уже прошли). Но самое главное, что основное время - подготовка данных - уже прошло.
Удаляем куку, делаем нужные действия по завершении загрузки...

И спасибо Василию, он меня "наставил на путь истинный" smile.gif

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Invis1ble
Цитата (sergeiss @ 21.07.2014 - 22:49)
Всё оказалось настолько просто, что даже стыдно, что сам не догадался wacko.gif

При клике надо включить таймер ожидания определенной куки. А в том файле, который загружается, надо эту куку выставить. И запрашивать ее, допустим, раз в 500 мс. Как только появилась кука - значит, процесс загрузки файла завершен (или, более строго, заголовки уже прошли). Но самое главное, что основное время - подготовка данных - уже прошло.
Удаляем куку, делаем нужные действия по завершении загрузки...

И спасибо Василию, он меня "наставил на путь истинный" smile.gif

хех, я не знаю, как ты искал, но я сейчас нашел за 2 минуты такое же решение в гугле (до того, как прочел, что тема решена уже) smile.gif
http://stackoverflow.com/questions/1106377...s-file-download

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

sergeiss
Цитата (Invis1ble @ 22.07.2014 - 17:12)
не знаю, как ты искал, но я сейчас нашел за 2 минуты такое же решение в гугле

"На всяку старуху бывает проруха" (с) - народная мудрость smile.gif

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.