перенаправление на html из cgi после того, как страница будет полностью написана

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

Cgi-скрипт, который я выполняю, обрабатывает некоторые числа и в конце выдает html-файл. Я контролирую расположение этого html-файла и предоставляю ему URL-адрес на временном веб-сайте, который отображается после успешной отправки html-формы.

Выходной html создается за мгновение или, другими словами, не создается мгновенно.

Есть ли способ проверить на моей временной странице cgi, полностью ли написан html, а затем автоматически перенаправить на него? Если страница не готова, я бы хотел, чтобы пользователь оставался на текущей странице.

На данный момент на моей временной странице cgi я отображаю кнопки «проверить» и «завершить», где вы можете проверить статус / завершить его. Когда нажимается «проверить» и сайт готов, я перенаправляюсь на него. Также я отображаю URL-адрес html-файла, к которому вы можете перейти, но будет представлен только фрагмент страницы, если следовать сразу.

Я хотел бы, чтобы обновление/перенаправление было автоматическим, поэтому пользователю не нужно ничего нажимать.

В другом месте я видел идею «попытаться загрузить известное маленькое изображение, и вы обнаружите, выполнена ли загрузка или нет»:

<img src="http://www.example.com/image.jpg"
  onload="window.location='http://www.example.com';"
  onerror="window.location='#';">

Мне это нравится, но это не идеально. Моя временная страница cgi не будет передавать URL-адрес результатов html без отправки формы (здесь нет GET, нет POST, поскольку форма не используется). Еще раз хотелось бы, чтобы перенаправление было максимально автоматическим.

Итак, подведем итог: как я могу проверить изнутри страницы, созданной с помощью CGI.pm, готова ли внешняя html-страница для перенаправления? Является ли DWR (http://directwebremoting.org) единственным решением?

Я был бы рад принять некоторые решения JavaScript.

ИЗМЕНИТЬ:

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


person mjp    schedule 02.07.2012    source источник


Ответы (1)


Поскольку вы контролируете написание результирующего HTML, я предполагаю, что и страница, сгенерированная из CGI, и статические результаты находятся в одном домене. Настройте на «ожидающей» странице функцию, периодически вызываемую с помощью .setInterval, которая будет пытаться запросить страницу результатов с помощью AJAX, и, как только вы получите ответ, отличный от 404, установите window.location на страницу результатов. Также предоставьте пользователю визуальный индикатор/отвлечение, чтобы он не подумал, что застрял.

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

person Oleg V. Volkov    schedule 02.07.2012
comment
Использование фреймворка js, такого как jQuery, сделает эту задачу очень простой. - person simbabque; 02.07.2012
comment
Я представляю, что это так. Хотя я не так хорошо разбираюсь в JavaScript. Я попробую, если у вас нет простого скелета, который я мог бы расширить. - person mjp; 02.07.2012
comment
@ Олег В. Волков Пожалуйста, посмотрите, как я редактирую. Как бы вы подошли к этому сейчас? - person mjp; 02.07.2012