jQuery: остановка действия по умолчанию для форм - PullRequest
1 голос
/ 02 августа 2011

В настоящее время я работаю с индикаторами выполнения для загрузки форм с использованием расширения PHP uploadprogress.Я следовал этому уроку, и все работает как в примере: http://www.ultramegatech.com/blog/2010/10/create-an-upload-progress-bar-with-php-and-jquery/

Однако в этом примере форма нацелена на iframe.Мой PHP-скрипт, который получает вызов, проверяет данные и проверяет их действительность и т. Д., Если он успешен, он перенаправляет, а в случае неудачи перезагружает страницу с подсветкой ошибок.Я забрал ...

target="upload-frame"

..., чтобы форма действовала как обычно и делала свое дело, что она и делает.

Однако теперь, когда нет цели или iframe(и я тоже удалил это из javascript) функция javascript, которая зацикливается для обновления индикатора выполнения, похоже, не возвращает никаких данных из функции php getprogress ().информация есть.

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

1 Ответ

1 голос
/ 02 августа 2011

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

Сначала с помощью jQuery я проверяю содержимое # upload-frame, чтобы увидеть, содержит ли оно страницу перенаправления или ту же страницу с ошибками, например:

$('#upload-frame').contents().find('.errors').size();

Если размер ошибки больше 0, тогда я знаю, что возникла проблема, и это нужно показать пользователю. Поэтому я делаю следующую замену кузова:

var html = $('#upload-frame').contents().find('body').html();
$('body').html(html);

Если ошибок нет, я просто перенаправляю на нужную страницу следующим образом:

window.location = "finished.php";
...