WolandV
Новичок
Прогресс-бар на AJAX
Здравствуйте.
Пытался сделать прогресс-бар парсера сайта. В формочку надо вбить УРЛ, который будет парситься (урл календаря к примеру) и пока идет парсинг, хотел выдавать прогресс-бар и меняющиеся статусы ("Собираю информацию", "Обрабатываю", "Добавляю в БД", "Операция завершена. В БД добавлено %% записей").
По сабмиту формы вызывается:
(в хедере: )
Сам скрипт парсера по ходу выполнения успешно возвращает и проценты, и статусы. Только не как по моей задумке "порциями", а в после выполнения скрипта выдает всю информацию для вывода сразу.
Мнения знакомых разделились. Один предлагает:
> вместо аякс запроса сделать пост во фрейм
> т.е.
> function submitFrame() {
> тут создание фрейма, и
> form.target = frame;
> form.submit();
> }
> также сделать функцию
> function showProgressHandler(p) {
> }
> сабмитить форму в parser.php
> и в моменты, когда ты считаешь, что пора отдавать проценты в браузер делаешь так:
> echo "<script> parent.showProgressHandler(52); </script>";
> flush();
> например так
> echo "<script>
> if(parent && parent.document && typeof(parent.document.showProgressHandler) == 'function') parent.document.showProgressHandler($Percentage);
> else if(top && top.document && typeof(top.document.showProgressHandler) == 'function') top.document.showProgressHandler($Percentage);
> </script>";
> flush();
> идея этого - создать фрейм, в котором открыть parser.php и он же будет переодически выплевывать JS код, который будет рисовать проценты
> то, что я тебе описываю обычно и реализовают в таких случаях
> с небольшими вариациями
> аякс для этого не подходит.
Но этот вариант во-первых не заработал из-за flush(), которому нужны "тепличные" условия и определенные настройки на хостинге, а во-вторых этот вариант раскритиковал второй знакомый, который предложил "домучать" AJAX.
Кто из них прав и как лучше реализовать мою задачу?
Заранее благодарю за помощь!
Здравствуйте.
Пытался сделать прогресс-бар парсера сайта. В формочку надо вбить УРЛ, который будет парситься (урл календаря к примеру) и пока идет парсинг, хотел выдавать прогресс-бар и меняющиеся статусы ("Собираю информацию", "Обрабатываю", "Добавляю в БД", "Операция завершена. В БД добавлено %% записей").
По сабмиту формы вызывается:
PHP:
<input class="button" type="button" name="Submit" value="Submit" onClick="FormClick(); return false;">
PHP:
<script>
function FormClick ()
{
var str = $("#ParserForm").serialize();
$.post(
"parser.php",
str,
function(CompleteNotice)
{
jQuery("#progress").empty();
jQuery("#progress").append(Complete);
}
);
}
</script>
Мнения знакомых разделились. Один предлагает:
> вместо аякс запроса сделать пост во фрейм
> т.е.
> function submitFrame() {
> тут создание фрейма, и
> form.target = frame;
> form.submit();
> }
> также сделать функцию
> function showProgressHandler(p) {
> }
> сабмитить форму в parser.php
> и в моменты, когда ты считаешь, что пора отдавать проценты в браузер делаешь так:
> echo "<script> parent.showProgressHandler(52); </script>";
> flush();
> например так
> echo "<script>
> if(parent && parent.document && typeof(parent.document.showProgressHandler) == 'function') parent.document.showProgressHandler($Percentage);
> else if(top && top.document && typeof(top.document.showProgressHandler) == 'function') top.document.showProgressHandler($Percentage);
> </script>";
> flush();
> идея этого - создать фрейм, в котором открыть parser.php и он же будет переодически выплевывать JS код, который будет рисовать проценты
> то, что я тебе описываю обычно и реализовают в таких случаях
> с небольшими вариациями
> аякс для этого не подходит.
Но этот вариант во-первых не заработал из-за flush(), которому нужны "тепличные" условия и определенные настройки на хостинге, а во-вторых этот вариант раскритиковал второй знакомый, который предложил "домучать" AJAX.
Кто из них прав и как лучше реализовать мою задачу?
Заранее благодарю за помощь!