@l4m3r

Есть ли событие окончания обработки формы (не ajax)?

Есть форма которая отправляет файл, а сервер возвращает другой файл. То есть аяксом отправлять проблематично. Занимает обработка секунд 30. Хочу показывать какой-нибудь лоадер крутящийся на весь экран пока идёт обработка.
Единственное, что on submit я могу только показывать его. А как узнать, что запрос выполнился?
  • Вопрос задан
  • 73 просмотра
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А в чём проблема отправить и получить файл через Ajax?
В HTML создаётся пустая ссылка:
<a href='' id='report-link' download style='display: none;'></a>
В JS:
var data = new FormData();
data.append('file', document.getElementById('file').files[0]);
var post = new XMLHttpRequest();
post.open('POST', 'where/to/send', true);
post.onreadystatechange = function() {
  if (post.readyState != 4) {
    return;
  }
  hideSpinner();
  switch (post.status) {
    case 200:
      var a = document.getElementById('report-link');
      a.href = '/get/file/from&id=' + post.responseText;
      a.click();
      break;
    ...
  }
}
showSpinner();
post.send(data);

То бишь, отправили файл через Ajax, дождались ответа, подставили его идентификатор в ссылку и кликнули по ней.
Ответ написан
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
единственный рабочий вариант - на сервере по окончании работы скрипта писать в сессию флаг "готово", с фронта каждые N секунд отправлять аякс запрос на скрипт который проверяет наличие флага в сессии.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
https://developer.mozilla.org/en-US/docs/Web/API/F...
var xhr = new XMLHttpRequest();
xhr.open("post", formElement.action);
xhr.send(new FormData(formElement));

https://learn.javascript.ru/xhr-onprogress
Ответ написан
@M-ka
frontend присматривающийся к ror
ну описана ситуация, мол запрос ответ повторный запрос, вполне обычная ситуация...
отправил первый запрос, отобразил лоадер, дальше дождался ответа с нужным контентом, обработал распихал, спрятал лоадер... ну а по пути точки выхода для ошибок сделать, что бы убрать лоадер.... обычное действие
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы